2017-11-09 3 views
1

enter image description here Mein Ziel ist es, ein Balkendiagramm die zugewiesenen Stunden darstellen zu lassen. Die zugewiesenen Stunden sollten als tot_hrs über dem sched_hrs dargestellt werden. Daher sollte eine Linie bei 7 bei 'Blairstone FL' genau über dem Balken von 1 liegen. Die Handlung kommt jedoch mit drei Zeilen 7, 8 und 9 alle über "Blairstone FL", "Bonifay FL" und "Calhoun FL". Das Hauptproblem besteht der Code unten für tt im Bereich (len (service_areas)) :. Jede Hilfe wird sehr geschätzt.Linien in einem Balkendiagramm Matplotlib

sched_hrs=[1, 2, 3] 
tot_hrs=[7, 8, 9] 
columnstart = -0.5 
columnend = 0.5 
service_areas = ['Blairstone FL', 'Bonifay FL', 'Calhoun FL'] 

plt.figure(figsize=(len(service_areas) + 4.5, 4)).canvas.set_window_title('Click') 
ind = np.arange(len(service_areas)) 
width = 0.18 
plt.bar(ind, sched_hrs,width, label='Scheduled Hours', color='green', align="center") 
for tt in range(len(service_areas)): 
    plt.plot([columnstart, columnend], [tot_hrs, tot_hrs], color='#228B22', linestyle='-', linewidth=2) 
    columnstart +=1 
    columnend +=1 
plt.xticks(ind, service_areas, rotation=10) 
plt.yticks(np.arange(0, max(1, max(tot_hrs) + 2), 1)) 
plt.title("Allocated Hours") 
plt.xlabel("Areas") 
plt.ylabel("Hours") 
plt.legend() 
plt.show() 
+0

Sie wollen also grundsätzlich ein gestapeltes Balkendiagramm erstellen, wobei jeder Balken aus sched_hrs und tot_hrs besteht? –

+0

Kein gestapeltes Diagramm. Ich möchte ein Liniendiagramm über dem Balkendiagramm haben. Trotzdem danke. –

Antwort

3

Angenommen, dies ist das, was Sie erreichen wollen:

enter image description here

Dann sollten Sie die Zeile wie diese Parzelle:

plt.bar(ind, 0.1, width, bottom=tot_hrs, color='green', align="center") 

diesen Block von Code zu ersetzen:

for tt in range(len(service_areas)): 
    plt.plot([columnstart, columnend], [tot_hrs, tot_hrs], color='#228B22', linestyle='-', linewidth=2) 
    columnstart +=1 
    columnend +=1 
+0

Vielen Dank für das Hinzufügen dieser Antwort. Ziel ist es, anstelle einer zunehmenden linearen Projektion gerade Linien mit Pausen dazwischen zu haben. –

+0

Sie müssen wahrscheinlich eine Zeichnung erstellen, um anzuzeigen, was Sie erwarten. Verwenden Sie ms paint oder ein anderes Zeichenwerkzeug, das Ihnen zur Verfügung steht. –

+0

Bild wurde hinzugefügt. –

Verwandte Themen