【问题标题】:plotting multiple histograms in grid在网格中绘制多个直方图
【发布时间】:2015-06-14 08:06:58
【问题描述】:

我正在运行以下代码以在 3 x 3 网格中为 9 个变量绘制直方图。但是,它只绘制一个变量。

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

def draw_histograms(df, variables, n_rows, n_cols):
    fig=plt.figure()
    for i, var_name in enumerate(variables):
        ax=fig.add_subplot(n_rows,n_cols,i+1)
        df[var_name].hist(bins=10,ax=ax)
        plt.title(var_name+"Distribution")
        plt.show()

【问题讨论】:

    标签: python numpy pandas matplotlib


    【解决方案1】:

    您正在正确添加子图,但您为每个添加的子图调用 plt.show,这会导致显示迄今为止绘制的内容,即一个图。例如,如果你在 IPython 中内联绘图,你只会看到最后绘制的图。

    Matplotlib 提供了一些很好的examples 来说明如何使用子图。

    你的问题是这样解决的:

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    
    def draw_histograms(df, variables, n_rows, n_cols):
        fig=plt.figure()
        for i, var_name in enumerate(variables):
            ax=fig.add_subplot(n_rows,n_cols,i+1)
            df[var_name].hist(bins=10,ax=ax)
            ax.set_title(var_name+" Distribution")
        fig.tight_layout()  # Improves appearance a bit.
        plt.show()
    
    test = pd.DataFrame(np.random.randn(30, 9), columns=map(str, range(9)))
    draw_histograms(test, test.columns, 3, 3)
    

    这给出了这样的情节:

    【讨论】:

      【解决方案2】:

      如果你真的不担心标题,这里有一个单行

      df = pd.DataFrame(np.random.randint(10, size=(100, 9)))
      df.hist(color='k', alpha=0.5, bins=10)
      

      【讨论】:

        猜你喜欢
        • 2020-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-13
        • 1970-01-01
        • 1970-01-01
        • 2012-07-22
        • 1970-01-01
        相关资源
        最近更新 更多