如何将单独的Pan​​das 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=Trueplt.subplots

你可以看到e.gs. 在文件中显示joris的答案。 另外从文档中,您还可以在pandasplot函数中设置subplots=Truelayout=(,)

 df.plot(subplots=True, layout=(1,2)) 

你也可以使用fig.add_subplot()函数,这个函数可以获取子图的网格参数,如221,222,223,224等。 在这个ipython笔记本上可以看到有关pandas数据框的情节的好例子,包括subplots 。

您可以使用熟悉的Matplotlib风格调用figuresubplot 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()