在matplotlib散点图上更改轴刻度时绘制问题

时间:2013-12-02 13:44:19

标签: python-2.7 matplotlib scatter-plot

我正在使用matplotlib绘制散点图。这是一个有点特殊的问题。这是没有轴刻度的数据图

plt.scatter(x, y , marker ='x')
#plt.xscale('log')
#plt.yscale('log')
plt.show()

enter image description here

数据曲线图的轴缩放为“对数”刻度。

enter image description here

为什么会这样?即使基数更改为2e

,也会发生同样的情况

2 个答案:

答案 0 :(得分:1)

在这种特殊情况下,您无法在绘图后缩放轴。您可以事先缩放它们,所以:

plt.xscale('log')
plt.yscale('log')
plt.scatter(x, y , marker ='x')
plt.show()

在这种特殊情况下(相同的标记),您也可以使用plt.plot代替plt.scatter,然后缩放后绘图将起作用:

plt.plot(x, y, 'x')
plt.xscale('log')
plt.yscale('log')
plt.show()

我猜测为什么你不能缩放后散点图:散点图返回一个PathCollection,这可能导致缩放函数只查看该集合的最后一个条目,即最后一个点。那当然只能在1e5 - 1e6范围内扩展。 plot()返回Line2D,将完整的情节考虑在内。

答案 1 :(得分:0)

日志缩放应该合理地剪切值,因此数据中的0不是问题。

我怀疑问题在于您的限制具有负值,因此天真地记录限制并使用这些导致问题。

您还可以明确设置限制

ax = plt.gca()
ax.set_xlim([1e-5, 1e6])
ax.set_ylim([1e-5, 1e6])

并且不依赖于自动缩放。