出于某种原因,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()
答案 0 :(得分:4)
我相信这是a known issue,但在matplotlib中仍未解决。它与here或here相同。
此案例的可能解决方案是
使用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中解决。只需更新您的软件包,它就可以工作。