2017-07-17 175 views
1

目的:要使用for循环生成100个barplots,并显示输出作为副区图像用for循环生成多个图;在matplotlib副区显示输出

数据格式:数据文件与101列。最后一列是X变量;剩余的100列是Y变量,对其绘制x。

期望输出:Barplots在5×20阵列的插曲,如在本实施例中图像:Subplot - 3 x 2 array example

当前方法:我在seaborn,其产生的nx 1阵列被使用PairGrid:example output

where input == dataframe; 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") 

有没有人有任何想法如何解决这个问题?

回答

0

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

0

要给出了如何在20×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