使用数据框绘制子图

时间:2020-06-03 04:01:15

标签: python matplotlib

我有包含9个数据帧的字典。我想为每个数据框创建一个3,3子图并绘制条形图。

要绘制一个图,我会这样做(只是一个不考虑子图的图),

%matplotlib inline
with plt.style.context('bmh'):
    famd = satFAMD_obj['MODIS.NDVI']
    df_norm = satFAMD_dfNorm['MODIS.NDVI']
    df_cor =famd.column_correlations(df_norm)
    df_cor.columns = ['component 1','component 2', 'component 3']
    df_cor.plot(kind = 'bar',cmap = 'Set1', figsize = (10,6))
plt.show()

其中satFAMD_objsatFAMD_dfNorm是两个字典,其中包含经过因素分析训练的对象和一个数据框。在下一行中,我创建一个名为df_cor的新数据框,然后使用此行df_cor.plot(kind = 'bar',cmap = 'Set1', figsize = (10,6))对其进行绘制。

现在我的问题是当涉及到多个子图时,我该怎么做? 我不能简单地做到这一点,

fig,ax = plt.subplots(3,3, figsize = (12,8))
ax[0,0].df_cor.plot(kind = 'bar',cmap = 'Set1')

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我想您的两个字典中的所有键都需要绘制。

您将:

  • 声明子图,
  • 迭代字典,
  • 遍历轴对象,
  • 绘制每组轴。

使用类似以下示例的代码:

fig,ax = plt.subplots(3,3, figsize = (12,8))

for k1,k2 in zip(satFAMD_obj.keys(),satFAMD_dfNorm.keys()):
    for axes in ax.flatten():
        famd = satFAMD_obj[k1]
        df_norm = satFAMD_dfNorm[k2]
        df_cor = famd.column_correlations(df_norm)
        df_cor.columns = ['component 1','component 2', 'component 3']
        df_cor.plot(kind = 'bar',cmap = 'Set1',ax=axes)
        #                                      ^^^^^^^