使用for循环生成多个图表;在matplotlib子图中显示输出

5
目标: 使用for循环生成100个条形图,并将输出显示为子图图像。 数据格式: 包含101列的数据文件。最后一列是X变量;其余的100列是Y变量,用于绘制x轴。 期望输出: 一个5 x 20的子图阵列,如此示例图像: Subplot - 3 x 2 array example 当前方法: 我一直在使用seaborn中的PairGrid,它生成n x 1数组: example output
其中输入 == 数据框架; 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")

有人有解决这个问题的想法吗?

2个回答

4

举个例子,如何在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()

enter image description here


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接