2016-06-16 4 views
5

unterbricht Meine Herausforderung besteht darin, viele Sequenzen von Daten in der Spalte (wo jede Spalte ist die Daten für viele Simulationen für den gleichen Identifikator (ID)) und Index von Pandas Dataframe ist die Monate der Simulation. Das Problem liegt in der Linie, die durch Pandas erzeugt wird, die die verschiedenen Simulationen in derselben Spalte verbinden.Wie man ein Liniendiagramm in der Zeichnung pandas oder matplotlib python

Schauen Sie sich das Beispiel an, das das Problem reproduziert. Wie kann ich es beheben?

# import library 
import numpy as np 
import matplotlib.pyplot as plt 
import pandas as pd 

# create da dataset 
columns = ['A','B'] 
data = np.array([np.random.randint(10, size=15), 
      np.random.randint(10, size=15)]).T 
index = list(range(0,5))*3 
dataset = pd.DataFrame(data, index=index, columns=columns) 

# plotting 
plot_data = dataset.plot(title='Example StackOverflow') 
plot_data.set_xlabel('Years') 
plot_data.set_ylabel('Values') 
plot_data.legend(loc='best', ncol=4, fancybox=True, shadow=True) 
plot_data.set_axis_bgcolor('w') 
fig = plot_data.get_figure() 
fig.savefig('example_figure_stackoverflow.png', dpi=400) 

Ergebnis

Plot result as the problem of linking lines

Antwort

1

Hier ist eine Lösung, die matplotlib direkt verwendet.

# code until "plotting" same as question 

# plotting 
simlen = 5 
for c in columns: 
    for i in range(0, len(index), simlen): 
    plt.plot(index[i:i+simlen], dataset[i:i+simlen][c], 
     color=dict(A='b', B='g')[c], 
     label=c if i == 0 else None) 
plt.legend() 
plt.show() 

(ich jede Simulation hat Länge 5 angenommen, die in Ihrer Frage nicht explizit war Hinweis dass die Daten anders strukturiert sein könnten, da Pandas nicht mehr zum Plotten verwendet werden.)

Hier ist der Ausgang: sample figure

Verwandte Themen