Seite 1 von 1

Name der aktuellen figure abfragen

Verfasst: Donnerstag 16. Januar 2020, 04:37
von ytm81524
Hallo,

kann man irgendwie den Namen der aktuellen Figure abfragen? Ich möchte in folgendem Codein der letzten Zeile, bei der Namensgebung das "f2_"+... ersetzen, indem ich es abfrage.

Code: Alles auswählen

import matplotlib.pyplot as plt
import time
import numpy as np
timestr = time.strftime("%Y%m%d-%H%M%S")

x = -50 + np.random.random((2500,1))*100
y = x**2

f2=plt.figure()
plt.scatter(x, y, s = 1)
plt.title('test')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
f2.savefig("f2_"+timestr+".pdf", bbox_inches='tight')

Re: Name der aktuellen figure abfragen

Verfasst: Donnerstag 16. Januar 2020, 08:10
von Kirikkayis
Hey,

versuch es mal wie folgt

Code: Alles auswählen

plt.gcf()
bzw.

Code: Alles auswählen

plt.gcf().number

Re: Name der aktuellen figure abfragen

Verfasst: Donnerstag 16. Januar 2020, 08:22
von Sirius3
@ytm81524: was meinst Du mit Namen? Den Titel?

Code: Alles auswählen

import matplotlib.pyplot as plt
from datetime import datetime as DateTime
import numpy as np

x = -50 + np.random.random((2500,1))*100
y = x**2
fig, ax = plt.subplots()
ax.scatter(x, y, s = 1)
ax.set_title('test')
ax.xlabel('x')
ax.ylabel('y')
fig.show()
fig.savefig(f"{ax.get_title()}_{DateTime.now():%Y%m%d-%H%M%S}.pdf", bbox_inches='tight')

Re: Name der aktuellen figure abfragen

Verfasst: Freitag 17. Januar 2020, 02:48
von ytm81524
@ Kirikkayis
Mit ersterem kann ich einen figure.Figure Typ erzeugen, mit dem zweiten ein int mit dem Inhalt 1.

@ Sirius3
Meine Frage war schlecht formuliert, es geht mir nich um den Namen im Sinne des Titels sondern am Anfang erzeuge ich die leere figure mit f2=plt.figure(). Dieses "f2" möchte ich nun hinterher wieder abfragen und zum Abspeichern als Namesteil mitverwenden.

Re: Name der aktuellen figure abfragen

Verfasst: Freitag 17. Januar 2020, 04:44
von __deets__
Verstehe ich nicht. Du hast doch (die sagenhaft schlecht benannte) Variable f2. Was hindert dich daran dir zu benutzen?

Re: Name der aktuellen figure abfragen

Verfasst: Freitag 17. Januar 2020, 05:51
von ytm81524
Ja das war grundsätzlich auch meine Idee. Ich weiß nur noch nicht wie das funktioniert. Wie rufe ich den "Namen" der Figure, das f2 denn wieder ab?

Re: Name der aktuellen figure abfragen

Verfasst: Freitag 17. Januar 2020, 06:13
von sparrow
Gibt es auch ein f1 und ein f3? Das Durchnunmerieren von Variablen deutet darauf hin, dass man eine Datenstruktur verwenden möchte.

Wie __deets__ schon schrieb: der Variablenname ist eh schon schlecht. Eigentlich sollte der "figure" lauten.
Und wenn du die Datei "fig2" nennen willst, dann tu das dort, wo du sie speicherst.

Was willst du den wirklich erreichen? Ich vermute, du denkst mit dem Benennnen einer Datei nach dem Namen einer Variable löst du ein Problen. Da bist du auf dem Holzweg. Wenn du uns das Problem nennst, sagen wir dir, wie es eigentlich gelöst wird.

Re: Name der aktuellen figure abfragen

Verfasst: Freitag 17. Januar 2020, 06:21
von Sirius3
Gar nicht. Kannst du mal beschreiben was du eigentlich erreichen willst? Wer legt den Namen fest? Warum ist das nicht einfach ein String?

Code: Alles auswählen

figure_name = "f2"
fig.savefig(f"{figure_name}_{DateTime.now():%Y%m%d-%H%M%S}.pdf", bbox_inches='tight')

Re: Name der aktuellen figure abfragen

Verfasst: Montag 27. Januar 2020, 22:48
von ytm81524
In der folgenden Zeile kommt das f2 eben zweimal vor. Einmal zu Beginn, um klarzustellen das figure f2 abgespeichert werden soll und danach nochmal in der Namensgebung der Datei. Die Idee war, diese Dopplung zu vermeiden, indem bei der Namensgebung das f2, welches am Anfang der Zeile eingegeben wurde, irgendwie abgefragt wird.

Code: Alles auswählen

f2.savefig("f2_"+timestr+".pdf", bbox_inches='tight')

Re: Name der aktuellen figure abfragen

Verfasst: Montag 27. Januar 2020, 23:18
von __deets__
Das geht nicht. Jedenfalls nicht für eine sinnvolle Definition von “geht nicht”.

Du kannst Objekte in einem Wörterbuch speichern. Da kannst du dann den Schlüssel benutzen.

Re: Name der aktuellen figure abfragen

Verfasst: Dienstag 28. Januar 2020, 10:18
von sparrow
@ytm81524: Ich verstehe übrigens noch immer nicht, warum im Dateinamen der Variablenname enthalten sein muss.
Wenn du wirklich Dopplung vermeiden willst, kapsel das ganze in einer Funktion. Bisher scheint das nämlich alles sehr statisch und unflexibel. Dann ist der Name der Variable eh egal.