2017-07-17 2 views
1

Objectif: Pour générer 100 barplots en utilisant une boucle, et afficher la sortie comme une image intrigue secondaireGénère plusieurs parcelles avec pour boucle; affichage sortie dans matplotlib intrigues secondaires

Format des données: avec 101 colonnes Datafile. La dernière colonne est la variable X; les 100 colonnes restantes sont les variables Y, contre lesquelles x est tracé.

sortie souhaitée: Barplots à 5 x 20 matrice de sous-parcelle, comme dans cet exemple, l'image: Subplot - 3 x 2 array example

approche actuelle: J'utilise PairGrid dans Seaborn, qui génère une matrice nx 1: example output .

où entrée == trame de données; input3 == liste à partir de laquelle les en-têtes de colonne sont appelés:

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") 

Est-ce que quelqu'un a des idées pour résoudre ce problème?

Répondre

0

Vous pouvez essayer d'utiliser subplots de matplotlob pour créer la grille de tracé et passer l'axe au barplot. L'indexation de l'axe que vous pourriez faire en utilisant une boucle imbriquée ...

0

Pour donner un exemple de la façon de tracer 100 colonnes de trame de données sur une grille de 20 x 5 intrigues secondaires:

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