matplotlib中的基本轴故障

时间:2017-05-04 10:22:24

标签: matplotlib axis scaling

当使用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会使用如此奇怪的缩放?

1 个答案:

答案 0 :(得分:0)

图中的数据均在0.6960000000170.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()

enter image description here