gpt4 book ai didi

python - pandas:用标签绘制时间序列的多列(来自 pandas 文档的示例)

转载 作者:行者123 更新时间:2023-11-28 16:35:33 26 4
gpt4 key购买 nike

我正在尝试重新创建使用标签绘制时间序列的多列的示例,如此处的 Pandas 文档所示:http://pandas.pydata.org/pandas-docs/dev/visualization.html#visualization-basic (第二张图)

multiple columns of a timeseries with labels

这是我的代码:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

ts = pd.DataFrame(np.random.randn(1000, 4), index=pd.date_range('1/1/2000', periods=1000), columns=list('ABCD'))
ts = ts.cumsum()
fig = plt.figure()

print ts.head()
ts.plot()
fig.savefig("x.png")

文本输出似乎没问题:

                   A         B         C         D
2000-01-01 1.547838 -0.571000 -1.780852 0.559283
2000-01-02 1.165659 -1.859979 -0.490980 0.796502
2000-01-03 0.786416 -2.543543 -0.903669 1.117328
2000-01-04 1.640174 -3.756809 -1.862188 0.466236
2000-01-05 2.119575 -4.590741 -1.055563 1.004607

但是 x.png 总是空的。

如果我只绘制一列:

ts['A'].plot()

我确实得到了结果。

有没有办法调试它,找出这里出了什么问题?

最佳答案

你没有得到结果的原因是你没有保存“正确”的数字:你正在用 plt.figure() 制作一个数字,但是 pandas 没有绘制在当前图形,并将创建一个新图形。
如果你这样做:

ts.plot()
fig = plt.gcf() # get current figure
fig.savefig("x.png")

我得到了正确的输出。绘制系列时,如果未传递任何轴,它使用当前轴。
但似乎 pandas 文档在该帐户上并不完全正确(因为它们使用 plt.figure()),我为此报告了一个问题:https://github.com/pydata/pandas/issues/8776

另一种选择是使用 ax 参数提供一个轴对象:

fig = plt.figure()
ts.plot(ax=plt.gca()) # 'get current axis'
fig.savefig("x.png")

或稍微清洁一点(IMO):

fig, ax = plt.subplots()
ts.plot(ax=ax)
fig.savefig("x.png")

关于python - pandas:用标签绘制时间序列的多列(来自 pandas 文档的示例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26845727/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com