我正在使用python 2.7在pyqt程序中使用matplotlib绘制一些大数字.我的y轴范围从1e + 18到3e + 18(通常).我想看到每个刻度线以科学记数法显示值,并带有2位小数.例如2.35e + 18而不仅仅是2e + 18,因为2e + 18和3e + 18之间的值仍然只读取2e + 18的几个标记.这是一个问题的例子.
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
x = np.linspace(0, 300, 20)
y = np.linspace(0,300, 20)
y = y*1e16
ax.plot(x,y)
ax.get_xaxis().set_major_formatter(plt.LogFormatter(10, labelOnlyBase=False))
ax.get_yaxis().set_major_formatter(plt.LogFormatter(10, labelOnlyBase=False))
plt.show()
Run Code Online (Sandbox Code Playgroud) 在matplotlib.pyplot创建的绘图中,如何强制轴标签以指数表示法显示?对于值<1e-6,这似乎是自动完成的,但是对于5e-6,我得到"0.000005".我更喜欢将它显示为"5e-6".
我试图将轴固定为两个不同数据集的科学记数,其中一个是[1-9] x1e-3,另一个是[1-9] x1e-4.我想将两个轴设置为10 ^ -4并且在十进制之后具有一位数(例如%.1e).这是一个我试图玩的简单版本:我希望轴上的数字至少为1,我希望两种力量都相同.
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(1,9,9)
y1 = x*10**(-4)
y2 = x*10**(-3)
fig, ax = plt.subplots(2,1,sharex=True)
ax[0].plot(x,y1)
ax[0].ticklabel_format(axis='y', style='sci', scilimits=(-4,-4))
ax[0].yaxis.major.formatter._useMathText = True
ax[1].plot(x,y2)
ax[1].ticklabel_format(axis='y', style='sci', scilimits=(-4,-4))
ax[1].yaxis.major.formatter._useMathText = True
plt.show()
Run Code Online (Sandbox Code Playgroud)