【问题标题】:Generate multiple plots with for loop; display output in matplotlib subplots使用 for 循环生成多个图;在 matplotlib 子图中显示输出
【发布时间】:2017-12-21 17:54:01
【问题描述】:

目标:使用 for 循环生成 100 个条形图,并将输出显示为子图图像

数据格式:101列的数据文件。最后一列是 X 变量;剩下的 100 列是 Y 变量,x 是根据这些变量绘制的。

所需输出:5 x 20 子图数组中的条形图,如本示例图像中所示:

当前方法:我一直在 seaborn 中使用 PairGrid,它生成一个 n x 1 数组:

输入 == 数据帧; input3 == 调用列标题的列表:

for i in input3:
    plt.figure(i)
    g = sns.PairGrid(input,
             x_vars=["key_variable"],
             y_vars=i,
             aspect=.75, size=3.5)
    g.map(sns.barplot, palette="pastel")

有人知道如何解决这个问题吗?

【问题讨论】:

    标签: python for-loop matplotlib batch-processing subplot


    【解决方案1】:

    举例说明如何在 20 x 5 子图的网格上绘制 100 个数据框列:

    import matplotlib.pyplot as plt
    import pandas as pd
    import numpy as np
    
    data = np.random.rand(3,101)
    data[:,0] = np.arange(2,7,2)
    df = pd.DataFrame(data)
    
    fig, axes = plt.subplots(nrows=5, ncols=20, figsize=(21,9), sharex=True, sharey=True)
    for i, ax in enumerate(axes.flatten()):
        ax.bar(df.iloc[:,0], df.iloc[:,i+1])
        ax.set_xticks(df.iloc[:,0])
    
    plt.show()
    

    【讨论】:

      【解决方案2】:

      您可以尝试使用 matplotlob 的subplots 创建绘图网格并将轴传递给barplot。您可以使用嵌套循环进行轴索引...

      【讨论】:

        猜你喜欢
        • 2011-10-25
        • 1970-01-01
        • 2021-12-18
        • 2021-12-29
        • 2018-07-25
        • 2021-08-02
        • 2021-02-09
        • 1970-01-01
        • 2015-06-22
        相关资源
        最近更新 更多