35

我正在用 matplotlib 绘制一些数据。我希望情节专注于特定范围的 x 值,所以我使用 set_xlim()。

大致来说,我的代码如下所示:

fig=plt.figure()
ax=fig.add_subplot(111)
for ydata in ydatalist:
    ax.plot(x_data,y_data[0],label=ydata[1])
ax.set_xlim(left=0.0,right=1000)
plt.savefig(filename)

当我查看绘图时,x 范围最终是从 0 到 12000。无论 set_xlim() 发生在 plot() 之前还是之后,都会发生这种情况。为什么 set_xlim() 在这种情况下不起作用?

4

5 回答 5

18

出于好奇,切换旧的xminandxmax怎么样?

fig=plt.figure()
ax=fig.add_subplot(111)
ax.plot(x_data,y_data)
ax.set_xlim(xmin=0.0, xmax=1000)
plt.savefig(filename)
于 2013-07-19T19:50:08.277 回答
16

此答案的文本取自一个答案,该答案在发布后几乎立即被删除。

set_xlim()限制图上显示的数据。

要更改轴的边界,请使用set_xbound().

fig=plt.figure()
ax=fig.add_subplot(111)
ax.plot(x_data,y_data)
ax.set_xbound(lower=0.0, upper=1000)
plt.savefig(filename)
于 2013-07-19T05:02:25.983 回答
6

就我而言,仅以下解决方案不起作用:

ax.set_xlim([0, 5.00])
ax.set_xbound(lower=0.0, upper=5.00)

但是,使用set_aspect工作设置方面,即:

ax.set_aspect('auto')
ax.set_xlim([0, 5.00])
ax.set_xbound(lower=0.0, upper=5.00)
于 2020-01-23T17:39:41.377 回答
1

我一直在努力奋斗ax.set_xlim(),但无法让它正常工作,我确切地找到了原因。设置 xlim 后,我设置了 xticks 和 xticklabels(这些是 x 轴上的垂直线及其标签),这以某种方式将轴拉长到所需的程度。因此,如果最后一个刻度在300并且我的 xlim 设置在100,它再次将轴加宽到300just 以将刻度放在那里。所以解决办法就是把它放在麻烦的代码之后:

ax.set_xlabel(label)
ax.set_xticks(xticks)
ax.set_xticklabels(xticks, rotation=60)

ax.set_xlim(xmin=0.0, xmax=100.0)
于 2021-09-10T13:44:03.660 回答
0

今天我也发生了同样的事情。我的问题是数据格式不正确,即不是浮动的。与例如字符串相比,我设置的限制(本身浮动)变得毫无意义。将 float() 放在数据周围后,一切都按预期工作。

于 2021-11-26T13:03:40.570 回答