【发布时间】:2018-05-15 14:53:21
【问题描述】:
我发现使用 matplotlib 实现感觉应该非常简单的东西真的很困难。我有 1000 个数据点的时间序列,相隔 10 秒记录。 我想绘制它们,以便将 x 轴范围正确标记为 0 到 10,000 秒。我希望自动选择 y 轴值。
无论我尝试什么,我似乎都无法让 matplotlib 在 x 轴上显示除数组中数据点的数量(即 0-1000)之外的任何标签。我试过了:
绘制两次。首先让它自动缩放,然后调用 plt.axis() 来检索 x 和 y 限制,然后将它们存储起来以供第二次调用 plt.axis([a,b,c,d])。它只是绘制了 0-1000。不知何故,它只是忽略了我并恢复到 0-1000。
我试过这个:
ax = plt.subplot(111)
ax.xaxis.set_data_interval(0, 10000)
还有
plt.xlim(0, 10000)
无济于事,以及我现在删除和忘记的许多其他内容。我不敢相信我现在已经以某种方式浪费了时间!
有人可以帮忙吗?谢谢!
编辑:我被要求提供一个最小的例子 - 这里有两个说明我发现的两个结果,
import matplotlib.pyplot as plt
tseries=[1,2,3,4,5,6,7,8,9,10]
plt.plot(tseries)
ax = plt.subplot(111)
ax.xaxis.set_data_interval(0, 10000)
plt.show()
这个被忽略了
import matplotlib.pyplot as plt
tseries=[1,2,3,4,5,6,7,8,9,10]
plt.plot(tseries)
plt.xlim(0, 100)
plt.show()
这个压缩了所有数据,将其保持在绘图的 0-10 范围内。
我尝试过的所有方法都产生了上述两种结果之一
基本上我只想要第一个带有第二个轴的图。
【问题讨论】:
-
你是如何绘制这些值的?
ax.plot(data)还是ax.plot(x, y)?因为听起来你在做前者,但你希望后者为ax.plot(range(0, 10000, 10), data)。 -
@FHTMitchell 这给了我“ValueError:x 和 y 必须具有相同的第一维,但具有形状 (1000,) 和 (10001,)”
-
@DavidG 我添加了一对!欢呼
标签: python matplotlib