当使用matplotlib绘图时,我遇到了一个有趣的问题,其中y轴被非常不方便的数量缩放。这是一个证明问题的MWE:
import numpy as np
import matplotlib.pyplot as plt
l = np.linspace(0.5,2,2**10)
a = (0.696*l**2)/(l**2 - 9896.2e-9**2)
plt.plot(l,a)
plt.show()
当我运行这个时,我得到的图形看起来像picture
即使y数据都在1到2之间,y轴显然也会被愚蠢的数量缩放。
这类似于以下问题: Axis numerical offset in matplotlib
我对这个问题的答案不满意,因为当数据介于1和2之间时,为什么我需要进行改变轴设置的复杂过程是没有意义的(编辑:介于0之间) 1)。为什么会这样?为什么matplotlib会使用如此奇怪的缩放?
答案 0 :(得分:0)
图中的数据均在0.696000000017
和0.696000000273
之间。对于这种情况,使用某种偏移是有意义的。
如果您不想要,可以使用自己的格式化程序:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker
l = np.linspace(0.5,2,2**10)
a = (0.696*l**2)/(l**2 - 9896.2e-9**2)
plt.plot(l,a)
fmt = matplotlib.ticker.StrMethodFormatter("{x:.12f}")
plt.gca().yaxis.set_major_formatter(fmt)
plt.show()