2016-07-18 12 views
2

Ich habe 7 Pi-Charts (4 sind unten aufgeführt). Ich versuche ein Dashboard mit 4 Kreisdiagrammen in der ersten Reihe und 3 Kreisdiagrammen in der zweiten Reihe zu erstellen. Nicht sicher, wo ich mit dem untenstehenden Code falsch liege. Gibt es andere Alternativen, um dies zu erreichen? Jede Hilfe wäre willkommen.Anordnung der Kreisdiagramme mit Matplotlib Subplot

from matplotlib import pyplot as PLT 
fig = PLT.figure() 
ax1 = fig.add_subplot(221) 
line1 = plt.pie(df_14,colors=("g","r")) 
plt.title('EventLogs') 
ax1 = fig.add_subplot(223) 
line2 = plt.pie(df_24,colors=("g","r")) 
plt.title('InstalledApp') 
ax1 = fig.add_subplot(222) 
line3 = plt.pie(df_34,colors=("g","r")) 
plt.title('Drive') 
ax1 = fig.add_subplot(224) 
line4 = plt.pie(df_44,colors=("g","r")) 
plt.title('SQL Job') 
ax1 = fig.add_subplot(321) 
line5 = plt.pie(df_54,colors=("g","r")) 
plt.title('Administrators') 
ax2 = fig.add_subplot(212) 
PLT.show() 

Antwort

1

Eine bessere Methode, die ich immer verwenden und ist intuitiver, at-dest für mich, ist subplot2grid zu verwenden ....

fig = plt.figure(figsize=(18,10), dpi=1600) 
#this line will produce a figure which has 2 row 
#and 4 columns 
#(0, 0) specifies the left upper coordinate of your plot 
ax1 = plt.subplot2grid((2,4),(0,0)) 
plt.pie(df_14,colors=("g","r")) 
plt.title('EventLogs') 
#next one 
ax1 = plt.subplot2grid((2, 4), (0, 1)) 
plt.pie(df_24,colors=("g","r")) 
plt.title('InstalledApp') 

Und Sie können weitergehen, und wenn Wenn Sie die Zeile wechseln möchten, schreiben Sie einfach die Koordinate als (1, 0) ... was die zweite Zeile - erste Spalte ist.

Ein Beispiel mit 2 Reihen und 2 Spalten -

fig = plt.figure(figsize=(18,10), dpi=1600) 
#2 rows 2 cols 
#first row, first col 
ax1 = plt.subplot2grid((2,2),(0,0)) 
plt.pie(df.a,colors=("g","r")) 
plt.title('EventLogs') 
#first row sec col 
ax1 = plt.subplot2grid((2,2), (0, 1)) 
plt.pie(df.a,colors=("g","r")) 
plt.title('EventLog_2') 
#Second row first column 
ax1 = plt.subplot2grid((2,2), (1, 0)) 
plt.pie(df.a,colors=("g","r")) 
plt.title('InstalledApp') 
#second row second column 
ax1 = plt.subplot2grid((2,2), (1, 1)) 
plt.pie(df.a,colors=("g","r")) 
plt.title('InstalledApp_2') 

enter image description here

hoffe, das hilft!

+0

Danke, es funktioniert perfekt. Gibt es eine Möglichkeit, eine gemeinsame Legende für alle 7 Plots festzulegen? Zum Beispiel rot als "nicht gesund", grün als "gesund"? – user3447653

+0

Sie suchen nach 'figlegend', aber da jedes der Plots eigene Achsen hat, ist es nicht möglich, es direkt mit 'legende' zu machen. Oder warum positionieren Sie nicht einfach Ihre Legende für eine Handlung? – hashcode55

+0

Ich habe das versucht, aber nicht wie erwartet funktioniert: lgd = plt.legend ((line1), ('Helathy', 'nicht gesund'), loc = 'oben rechts') – user3447653