作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 matplot
库在 python
中绘制绘图。我必须生成的数字非常大,所以轴上的刻度也是很大的数字并且占用大量空间。我试图将它们呈现为幂(例如,我想要 10^8 而不是勾选 100000000)。我使用了命令:ax.ticklabel_format(style='sci', axis='x', scilimits=(0,4))
但是这只创建了这样的东西
是否有任何其他解决方案可以使绘图的刻度为:1 x 10^4、2 x 10^4 等,或者在标签刻度的末尾将值 1e4 写为 10^4?
最佳答案
您可以使用 matplotlib.ticker
模块,并将 ax.xaxis.set_major_formatter
设置为 FuncFormatter
.
例如:
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import numpy as np
plt.rcParams['text.usetex'] = True
fig,ax = plt.subplots(1)
x = y = np.arange(0,1.1e4,1e3)
ax.plot(x,y)
def myticks(x,pos):
if x == 0: return "$0$"
exponent = int(np.log10(x))
coeff = x/10**exponent
return r"${:2.0f} \times 10^{{ {:2d} }}$".format(coeff,exponent)
ax.xaxis.set_major_formatter(ticker.FuncFormatter(myticks))
plt.show()
请注意,这使用 LaTeX
格式 (text.usetex = True
) 在刻度标签中呈现指数。还要注意区分 LaTeX
大括号和 python 格式字符串大括号所需的双大括号。
关于Python 情节 : How to denote ticks on the axes as powers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36480077/
我是一名优秀的程序员,十分优秀!