如何将单独的Pandas DataFrame作为子图进行绘制?
我有几个pandas数据框共享相同的价值规模,但有不同的列和索引。 当调用df.plot()
,我得到单独的graphics图像。 我真正想要的是把他们全部放在同样的情节下,但不幸的是我没有想出一个解决scheme,并且非常感谢他们的帮助。
您可以使用matplotlib手动创build子图,然后使用ax
关键字在特定子图上绘制dataframe。 例如对于4个子图(2×2):
import matplotlib.pyplot as plt fig, axes = plt.subplots(nrows=2, ncols=2) df1.plot(ax=axes[0,0]) df2.plot(ax=axes[0,1]) ...
这里的axes
是一个包含不同子图轴的数组,您可以通过索引axes
访问axes
。
如果你想共享x轴,那么你可以提供sharex=True
给plt.subplots
。
你可以看到e.gs. 在文件中显示joris的答案。 另外从文档中,您还可以在pandasplot
函数中设置subplots=True
和layout=(,)
:
df.plot(subplots=True, layout=(1,2))
你也可以使用fig.add_subplot()
函数,这个函数可以获取子图的网格参数,如221,222,223,224等。 在这个ipython笔记本上可以看到有关pandas数据框的情节的好例子,包括subplots 。
您可以使用熟悉的Matplotlib风格调用figure
和subplot
figure
,但只需使用plt.gca()
指定当前轴。 一个例子:
plt.figure(1) plt.subplot(2,2,1) df.A.plot() #no need to specify for first axis plt.subplot(2,2,2) df.B.plot(ax=plt.gca()) plt.subplot(2,2,3) df.C.plot(ax=plt.gca())
等等…
以上面的@joris响应为基础,如果您已经build立了对子图的引用,那么也可以使用引用。 例如,
ax1 = plt.subplot2grid((50,100), (0, 0), colspan=20, rowspan=10) ... df.plot.barh(ax=ax1, stacked=True)
你可以使用这个:
fig = plt.figure() ax = fig.add_subplot(221) plt.plot(x,y) ax = fig.add_subplot(222) plt.plot(x,z) ... plt.show()