如何强制pyplot显示坐标轴限制

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,这很容易让观众误以为y轴的下限0也代表了x轴的下限0。

我该如何强制pyplot在x=5处显示额外的刻度,以便明确告知观众两个轴没有相同的下限0?

1个回答

3

您可以使用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

请注意,现在x轴右侧没有标签。最后一个标签是255(左侧也存在这个问题)。您可以通过修改arange中的步长来获取此标签,使得max - min / step为整数值(刻度数)或非常接近整数值。
虽然小数很难看,但这样做可以解决问题。
In [38]: plt.xticks(arange(5, 301, 29.5)) 

换句话说:没有自动强制限制标签的可能性。您必须在轴限制处手动添加标签。这意味着您首先必须手动发现(y)或设置(x)这些限制。 - mins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接