3

我的 x 和 y 轴通常分别在 0 到 300 和 0 到 60 之间。

但是,我只想显示来自 的值5 <= x <= 300,所以我这样做了

ax.set_xlim(left=5)

之后,图表确实从 5 开始,但没有任何迹象表明这一点。我在 x 轴上的第一个刻度是 50,然后是 100、150……y 轴上有标记为 0、20、40、60 的刻度,这很容易误导观众认为 0 的下限y 轴也表示 x 轴的下限 0。

如何强制 pyplot 在 x=5 处显示一个额外的刻度,以便明确告知查看者两个轴的下限都不相同?

4

1 回答 1

2

您可以使用 xticks 设置 x 轴的刻度。这是一个 ipython 会话:

In [18]: l = [random.randint(0, 10) for i in range(300)]

In [19]: plot(l)
Out[19]: [<matplotlib.lines.Line2D at 0x9241f60>]

In [20]: plt.xlim(xmin=5)       # I set to start at 5. No label is draw
Out[20]: (5, 300.0)

In [21]: plt.xticks(arange(5, 301, 50))  # this makes the first xtick at left to be 5
                                         # note the max range is 301, otherwise you will never
                                         # get 300 even if you set the appropriate step

请注意,现在,在 xaxis 的右侧,没有标签。最后一个标签是 255(与左侧相同的问题)。您可以通过修改 arange 的步长来获取此标签,以max - min / step使其成为(或非常接近)整数值(刻度数)。

这使得它(虽然十进制数字很难看):

In [38]: plt.xticks(arange(5, 301, 29.5)) 
于 2012-11-29T20:03:52.950 回答