Matplotlib的自动调节似乎不能在y轴上用于小值?

时间:2017-08-18 12:57:31

标签: python matplotlib

出于某种原因,plt.autoscale似乎不适用于非常小的值(例如1E-05之类的东西)。如图所示,所有内容都显示在图表中靠近零轴的位置。

我在这里出错的任何想法?

import matplotlib.pyplot as plt

y=  [1.09E-05,  1.63E-05,   2.45E-05,   3.59E-05,   5.09E-05,   6.93E-05,   9.07E-05]
x=  [0, 10, 20, 30, 40, 50, 60]

fig3, ax3 = plt.subplots()
ax3.scatter(x, y, color='k', marker = "o")
ax3 = plt.gca()
plt.autoscale(enable=True, axis="y", tight=False)
plt.show()

enter image description here

2 个答案:

答案 0 :(得分:4)

我相信这是a known issue,但在matplotlib中仍未解决。它与herehere相同。

此案例的可能解决方案是

使用plot 代替scatter

import matplotlib.pyplot as plt

y=  [1.09E-05,  1.63E-05,   2.45E-05,   3.59E-05,   5.09E-05,   6.93E-05,   9.07E-05]
x=  [0, 10, 20, 30, 40, 50, 60]

fig3, ax3 = plt.subplots()
ax3.plot(x, y, color='k', marker = "o", ls="")
ax3.autoscale(enable=True, axis="y", tight=False)
plt.show()

除了plot

之外,还使用隐身式scatter
import matplotlib.pyplot as plt

y=  [1.09E-05,  1.63E-05,   2.45E-05,   3.59E-05,   5.09E-05,   6.93E-05,   9.07E-05]
x=  [0, 10, 20, 30, 40, 50, 60]

fig3, ax3 = plt.subplots()
ax3.scatter(x, y, color='k', marker = "o")
ax3.plot(x, y, color='none')
ax3.relim()
ax3.autoscale_view()
plt.show()

使用set_ylim手动缩放轴

import matplotlib.pyplot as plt

y=  [1.09E-05,  1.63E-05,   2.45E-05,   3.59E-05,   5.09E-05,   6.93E-05,   9.07E-05]
x=  [0, 10, 20, 30, 40, 50, 60]

fig3, ax3 = plt.subplots()
ax3.scatter(x, y, color='k', marker = "o")

dy = (max(y) - min(y))*0.1
ax3.set_ylim(min(y)-dy, max(y)+dy)
plt.show()

答案 1 :(得分:1)

只需在此处向以后找到此帖子的任何人添加更新-现已在matplotlib 3.2.1中解决。只需更新您的软件包,它就可以工作。