在iPython/pandas中绘制多条线会生成多个图

2024-05-17 04:03:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图了解matplotlib的状态机模型,但在一个图上绘制多行时遇到了错误。据我所知,下面的代码应该生成一个包含两行的绘图:

import pandas as pd
import pandas.io.data as web
aapl = web.get_data_yahoo('AAPL', '1/1/2005')

# extract adjusted close
adj_close = aapl.loc[:, ['Adj Close']]

# 2 lines on one plot
hold(False)
adj_close.resample('M', how='min').plot()
adj_close.resample('M', how='max').plot()

事实上,我得到了三个数字:先是一个空白数字,然后是两个各有一行的数字。

blank plotfirst plotsecond plot

你知道我做错了什么吗?或者我的系统的什么设置可能被错误配置了?


Tags: importwebpandasclosedataplotmatplotlibas
1条回答
网友
1楼 · 发布于 2024-05-17 04:03:35

可以使用matplotlibspyplot包预创建axis对象,然后将绘图附加到此axis对象:

import pandas as pd
import pandas.io.data as web
import matplotlib.pyplot as plt

aapl = web.get_data_yahoo('AAPL', '1/1/2005')

# extract adjusted close
adj_close = aapl.loc[:, ['Adj Close']]

# 2 lines on one plot
#hold(False)

fig, ax = plt.subplots(1, 1)
adj_close.resample('M', how='min').plot(ax=ax)
adj_close.resample('M', how='max').plot(ax=ax)

Plot example

或者,您可以将这两个序列连接到一个m x 2数据帧中,并绘制数据帧:

s1 = adj_close.resample('M', how='min')
s2 = adj_close.resample('M', how='max')
df = pd.concat([s1, s2], axis=1)
df.plot()

相关问题 更多 >