Seite 1 von 1

Einfaches Diagramm mit Pyplot

Verfasst: Dienstag 6. Oktober 2015, 08:58
von felopy
Hallo,

ich will mit Pyplot ein Diagramm erstellen, welches mir pro Tag in einer Liste, eine Laufzeit in Stunden anzeigt.
Mit der y-Achse habe ich auch soweit kein Problem, jedoch weiß ich nicht, wie ich die x-Achse mit den Daten erstellen kann.

So sieht es aus:

Code: Alles auswählen

x = x_array_list   #ist eigentlich ne Liste, kein array
y = y_array_list   #ist eigentlich ne Liste, kein array

plt.plot(x, y) 
plt.title('Laufzeiten von '+date_list[0]+" bis "+date_list[-1])
plt.xlabel('Tag')
plt.ylabel('Stunden')
plt.ylim(0,24)
plt.yticks([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24])
plt.show()
Die Liste y_array_list beinhaltet die Stunden, dabei ist es egal ob es Integer oder Strings sind (ausprobiert), so sieht die Ausgabe aus:

Code: Alles auswählen

[0, 24, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0]

Die Liste x_array_list beinhaltet die Tage, hier weiß ich nicht genau wie es zu formatieren ist und wie ich es dann bei plt.xticks einstellen muss, sieht so aus:

Code: Alles auswählen

['02.18', '02.19', '02.20', '02.21', '02.22', '02.23', '02.24', '02.25', '02.26', '02.27', '02.28', '06.01', '06.02', '06.03', '06.04']
zu jedem x Wert gibt es genau ein y Wert, sollte doch eigentlich gar nicht so schwer sein damit ein schönes Balkendiagramm zu basteln, oder?

Re: Einfaches Diagramm mit Pyplot

Verfasst: Dienstag 6. Oktober 2015, 09:46
von felopy
Hab's mittlerweile hingekriegt.

Code: Alles auswählen

x = range(0, len(x_array_list))
y = y_array_list

plt.plot(x, y) 
plt.title('Laufzeiten von '+date_list[0]+" bis "+date_list[-1])
plt.xlabel('Tag')
plt.ylabel('Stunden')
plt.ylim(0,24)
plt.yticks([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24])
plt.xticks(x, x_array_list, rotation='vertical')
plt.show()

Re: Einfaches Diagramm mit Pyplot

Verfasst: Dienstag 6. Oktober 2015, 10:01
von MagBen
Mit Balken:

Code: Alles auswählen

import numpy as np
import matplotlib.pyplot as plt

x = ['02.18', '02.19', '02.20', '02.21', '02.22', '02.23', '02.24', '02.25', '02.26', '02.27', '02.28', '06.01', '06.02', '06.03', '06.04']
y = [0, 24, 0, 0, 0, 6, 0, 0, 0, 0, 7, 0, 0, 0, 3]
xpos = np.arange(len(x))

plt.figure()
plt.bar(xpos-.5, y)
plt.title('Laufzeiten von '+x[0]+" bis "+x[-1])
plt.xlabel('Tag')
plt.ylabel('Stunden')
plt.xlim(-1,16)
plt.xticks(xpos, x, rotation='vertical')
plt.show()

Re: Einfaches Diagramm mit Pyplot

Verfasst: Dienstag 6. Oktober 2015, 10:47
von felopy
Danke,
soweit so gut.
Wenn ich nun allerdings viele Tage habe, wird es unlesbar auf der x-Achse.
Gibt es eine einfache Möglichkeit nur jedes 7te Label anzuzeigen?

Re: Einfaches Diagramm mit Pyplot

Verfasst: Dienstag 6. Oktober 2015, 11:46
von MagBen
felopy hat geschrieben:Gibt es eine einfache Möglichkeit nur jedes 7te Label anzuzeigen?

Code: Alles auswählen

plt.xticks(x[::7], x_array_list[::7], rotation='vertical')

Re: Einfaches Diagramm mit Pyplot

Verfasst: Dienstag 6. Oktober 2015, 11:57
von felopy
Super, danke :)