dynamische Diagramm Linie am Ende beschriften

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
pythonstart777
User
Beiträge: 12
Registriert: Sonntag 23. Januar 2022, 03:32

Ist es möglich bei nachfolgendem Diagramm rechts direkt an den Linien die Linie zu beschriften? Die Linien werden ihre Positionen ändern wenn ich andere Variablen vorgebe also müsste das ganze natürlich mit den Linien verknüpft sein. mit plt.text() hätte ich ja eine feste Beschriftung.

Code: Alles auswählen

# Linien Auslegungsdiagramm
        for ma in np.arange(0.1, 1.1, 0.1): 
        

            phi=np.arange(0.1, 1.25, 0.05)
        
        
            y=(i2+phi/ma*(VLN2-RLN2)/b2/(np.exp(phi**((n2-1)/n2)/n2/ma*(VLN2-RLN2)/dN)-1))
            y1=y-i2
               
            x=(phi/ma*(VLN2-RLN2)+y)-i2
            
            plt.plot(x,y1, color='black', lw=0.5)
            plt.text(75, 10, "0,1")
            
            
        for phi in np.arange(0.1, 1.3, 0.1):
        
            ma=np.arange(0.1, 2.1, 0.1)
        
        
            y=(i2+phi/ma*(VLN2-RLN2)/b2/(np.exp(phi**((n2-1)/n2)/n2/ma*(VLN2-RLN2)/dN)-1))
            y1=y-i2
               
            x=(phi/ma*(VLN2-RLN2)+y)-i2

            plt.plot(x,y1, color='black', lw=0.5)


https://ibb.co/RYXMw5r
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@pythonstart777,

du kannst doch plt.text mit dem jeweils letzten x, y -Wert der Funktion positionieren:

Code: Alles auswählen

x = np.linspace(0, 4, 100)

y1 = np.exp(x - 1)
y2 = np.exp(x - 2)

plt.plot(x, y1, x, y2)
plt.text(x[-1] + 0.3, y1[-1], "f1")
plt.text(x[-1] + 0.3, y2[-1], "f2")
plt.show()
pythonstart777
User
Beiträge: 12
Registriert: Sonntag 23. Januar 2022, 03:32

jetzt hatte ich f1 und f2 links neben dem diagramm stehen und hab auch ehrlich gesagt nciht gesagt was du damit meinst, sorry

Also nochmal die diagonalen linien von oben recht nach unten links sollen rechts neben sich eine bschriftung haben. die linien werden aber je nach variable ihr position ändern also hoch und runter rutschen
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

pythonstart777 hat geschrieben: Dienstag 25. Januar 2022, 20:53 die linien werden aber je nach variable ihr position ändern also hoch und runter rutschen
Daher schreibt man keine festen Werte in plt.text() Funktion, sondern man verwendet Werte aus der zu plottenden Funktion als Positionsangaben. Dann kann man diese noch mit einem horizontalen Offset versehen um den Text zu verschieben.
Mein kleines Beispiel sollte zeigen wie man das umsetzen kann.

Ich weiß nicht wie dein Code zu deinem Plot passt, daher kann ich es dir das auch nicht an deinem Code zeigen.
pythonstart777
User
Beiträge: 12
Registriert: Sonntag 23. Januar 2022, 03:32

Mega Danke hat geklappt. weißt du vielleicht noch zufällig wie ich die Abstufung hin bekomme. mit dem Code unten beschrifte ich jetzt nur die grüne Linie also den wert 1

Code: Alles auswählen

# Linien Auslegungsdiagramm
        for ma in np.arange(0.1, 1.1, 0.1): 
            phi=np.arange(0.1, 1.25, 0.05)
            y=(i2+phi/ma*(VLN2-RLN2)/b2/(np.exp(phi**((n2-1)/n2)/b2/ma*(VLN2-RLN2)/dN)-1))
            y1=y-i2
            x=(phi/ma*(VLN2-RLN2)+y)-i2
            plt.plot(x,y1, color='black', lw=0.5)
        plt.text(x[-1], y1[-1], 1)
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@pythonstart777,

ich weiß nicht genau was du mit Abstufung meinst. Aktuell wird dem Plot mit jedem Durchlauf der Schleife ein neuer Plot hinzugefügt. Am Ende wird dann einmal der Text mit den letzten x und y Koordinaten geschrieben.
Damit jeder Plot einen Text bekommt must du die Anweisung in die Schleife ziehen.
Leider werden in deinem Programm die x und y Werte mit jedem Durchlauf überschrieben, da hat man nicht soviel Flexibilität.
Antworten