Gleicher Abstand bei Auflistung von Werten

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Elias_HH
User
Beiträge: 7
Registriert: Mittwoch 20. Mai 2020, 22:21

Guten Tag liebe Community,

ich schreibe gerade ein Programm der mir statistische Plots ausgibt. Neben den Plots möchte ich einige statisiche Werte ausgegeben bekommen. Mit Hilfe von plt.text() füge ich noch daneben einen Text ein der die Werte anzeigt:

Statistic:

Mean: 0.98
Median: 0.97
Sigma: 0.82
max threshold: nan

Das sieht nicht so aus. Ich möchte gerne, dass die Abstände gleich sind, so in etwas:

Statistic:

Mean:-----------------0.98
Median:--------------0.97
Sigma:----------------0.82
max threshold:---nan

Ich habe im Internet nichts konkretes finden könne, um mein Problem zu lösen.

Ps.: die Bindestriche zwischen dem Parameter und der Zahlen soll eigentlich nicht da sein. Ich musste die einfügen, weil die Abstände sonst bei der fertigen Version verschwinden würden.
Benutzeravatar
__blackjack__
User
Beiträge: 14032
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Elias_HH: Du könntest erst die Beschriftungen setzen und dir dann die mit der breitesten „bounding box“ suchen und als Grundlage für die Berechnung der x-Koordinate der Werte verwenden.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
narpfel
User
Beiträge: 690
Registriert: Freitag 20. Oktober 2017, 16:10

@Elias_HH: Eine andere Möglichkeit wäre, das ganze mit LaTeX als Tabelle zu formatieren:

Code: Alles auswählen

plt.rc('text', usetex=True)
plt.text(
    x, y,
    r"\setlength{\tabcolsep}{1em}"
    r"\begin{tabular}{ll}"
        r"mean & 0.42 \\"
        r"median & 0.27 \\"
        r"min & 42 \\"
        r"long long text & 27"
    r"\end{tabular}"
)
Achtung: Der Text muss anscheinend in einer Zeile stehen, weil `matplotlib` für jede Zeile ein neues LaTeX-Dokument erstellt.

Bild
tonikae
User
Beiträge: 90
Registriert: Sonntag 23. Februar 2020, 10:27

Vorschlag: Eine Figure mit 2 horizontalen Subplots anlegen.
In dem linken Bereich kannst du das Diagramm anzeigen,
in den rechten Bereich mit ax[1].text die Texte/Werte ausgeben.
Die Texte sind dann an den Koordinaten ausgerichtet.

Beispiel:

Code: Alles auswählen

daten=einlesen("Dateiname")
x=np.arange(daten.size)
fig,ax=pyplot.subplots( ncols=2, dpi=100, figsize=(6,3.3))
ax[0].plot(x,daten)
ax[1].set_axis_off()
ax[1].text(0,0.7,"Text1\nText2\nText3")
ax[1].text(0.5,0.7,"Wert1\nWert2\nWert3")
pyplot.show()
Antworten