Python 使用for循环生成多个绘图;在matplotlib子批次中显示输出

Python 使用for循环生成多个绘图;在matplotlib子批次中显示输出,python,for-loop,matplotlib,batch-processing,subplot,Python,For Loop,Matplotlib,Batch Processing,Subplot,目标:使用for循环生成100个条形图,并将输出显示为子地块图像 数据格式:包含101列的数据文件。最后一列是X变量;剩下的100列是Y变量,x是根据Y变量绘制的 所需输出:在5 x 20子批次阵列中绘制条形图,如本示例图像所示: 当前方法:我一直在seaborn中使用PairGrid,它生成一个n x 1数组: 其中输入==数据帧;input3==从中调用列标题的列表: for i in input3: plt.figure(i) g = sns.PairGrid(input,

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

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

所需输出:在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")

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

您可以尝试使用matplotlob创建打印网格,并将轴传递到图形。您可以使用嵌套循环进行的轴索引…

给出一个示例,说明如何在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()