Hallo zusammen, ich hätte da eine Frage. Und zwar möchte ein multiplen Plot mit For Loop Schleife, in einem PDf Datei abspeichern. Leider speichert er mir jedes mal nur den letzten Plot. Anscheinend läuft die Schleife durch und speichert den letzten Plot ab, ich habe verschiedene Sachen versucht, leider klappt es nicht. Mein Code sieht wie Folgt aus:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from matplotlib.backends.backend_pdf import PdfPages
import matplotlib.backends.backend_pdf
DATA_FILE = "C:/test/corr.xlsx"
c = pd.read_excel("C:/test/corr.xlsx")
c.select_dtypes(include = ['int16', 'int32', 'int64', 'float16', 'float32', 'float64'])
corr = c.corr()
indices = np.where(corr > 0.5)
indices = [(corr.columns[x], corr.columns[y]) for x, y in zip(*indices)
if x != y and x < y]
d = len(c)
x = np.arange(0,d,1)
for pair in indices:
y1 = c[pair[0]]
y2 = c[pair[1]]
fig = plt.figure(figsize=(10,4))
ax1 = fig.add_subplot(111)
ax1.plot(x, y1, "-o", color='b')
#ax1.set_ylabel(y1)
plt.ylabel(pair[0])
ax2 = ax1.twinx()
ax2.plot(x, y2,"-o" ,color='r')
#ax2.set_ylabel(y2, color='r')
for tl in ax2.get_yticklabels():
tl.set_color('r')
plt.title('Reihe')
plt.ylabel(pair[1])
plt.savefig("test.pdf", dpi =300)
würde mich freuen, wenn ihr mir helfen könntet.
Plots in Pdf abspeichern
Nein, er speichert jeden Plot, aber immer unter dem selben Namen.
Aber für Deinen Fall gibt es auch ein Beispiel: Multipage PDF.
Aber für Deinen Fall gibt es auch ein Beispiel: Multipage PDF.
@Sirius aber nur, wenn das plt.savefig("test.pdf", dpi =300) innerhalb der Schleife liegt
@mgm841
könntest du deinen Code im Editor zwischen
[ Python ]
hier Code
[ /Python ] setzen,
so ist die Struktur nicht erkennbar.
Im Editor gibt es rechts neben der Schriftgrößenauswahl einen Button dafür. Danke
@mgm841
könntest du deinen Code im Editor zwischen
[ Python ]
hier Code
[ /Python ] setzen,
so ist die Struktur nicht erkennbar.
Im Editor gibt es rechts neben der Schriftgrößenauswahl einen Button dafür. Danke
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Code: Alles auswählen
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from matplotlib.backends.backend_pdf import PdfPages
import matplotlib.backends.backend_pdf
DATA_FILE = "C:/test/corr.xlsx"
c = pd.read_excel("C:/test/corr.xlsx")
c.select_dtypes(include = ['int16', 'int32', 'int64', 'float16', 'float32', 'float64'])
corr = c.corr()
indices = np.where(corr > 0.5)
indices = [(corr.columns[x], corr.columns[y]) for x, y in zip(*indices)
if x != y and x < y]
d = len(c)
x = np.arange(0,d,1)
for pair in indices:
y1 = c[pair[0]]
y2 = c[pair[1]]
fig = plt.figure(figsize=(10,4))
ax1 = fig.add_subplot(111)
ax1.plot(x, y1, "-o", color='b')
plt.ylabel(pair[0])
ax2 = ax1.twinx()
ax2.plot(x, y2,"-o" ,color='r')
for tl in ax2.get_yticklabels():
tl.set_color('r')
plt.title('Reihe')
plt.ylabel(pair[1])
plt.savefig("test.pdf")
das war im ersten Post auch der Fall (sieht man, wenn man sich den HTML-Quelltext anschaut).ThomasL hat geschrieben: Montag 4. Juni 2018, 14:28 @Sirius aber nur, wenn das plt.savefig("test.pdf", dpi =300) innerhalb der Schleife liegt
vielleicht hilft ja dieses Beispiel
https://matplotlib.org/examples/pylab_e ... e_pdf.html
https://matplotlib.org/examples/pylab_e ... e_pdf.html
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
eventuell doppelt hilft doppelt oder so......
Nee, habe deinen Link nicht gesehen und selber gegoogelt.
Etwas was der Threadstarter hätte auch machen können.....
aber vielleicht möchte er Hilfe auf deutsch?
ist doch auch egal, oder?
Nee, habe deinen Link nicht gesehen und selber gegoogelt.
Etwas was der Threadstarter hätte auch machen können.....
aber vielleicht möchte er Hilfe auf deutsch?
ist doch auch egal, oder?
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
@ThomasL: wenn man die richtigen Stichworte nicht kennt, ist Google manchmal dumm. Und wenn man Anfänger ist, weiß man auch nicht, dass es in den Beispielen der matplotlib-Doku quasi für jedes Problem schon ein Beispiel gibt.
Ich kenne die Seite und Englisch stellt auch kein Problem dar, mein Problem ist, dass ich nicht weiß wie ich aus einem Loop heraus die einzelnen Plots speichern kann. Ohne die Save.fig Funktion werden mir alle Plots ohne Fehler angezeigt. Mir fehlt ein Zwischenschritt, nur weiß ich leider nicht, wie ich aus einem Loop einzelne Pdf Pages generiere.
- __blackjack__
- User
- Beiträge: 14032
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@mgm841: Statt der drei Plots die in dem Beispiel linear im Code als Seiten erstellt werden, musst Du das halt in einer Schleife machen. Dem `PdfPages`-Exemplar ist das völlig egal ob dessen `savefig()`-Methode in einer Schleife aufgerufen wird, oder mehrmals hintereinander in linear runter geschriebenen Code. Den Unterschied könnte man ja auch gar nicht heraus finden.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
@__blackjack__ :Wie muss ich mir das genau vorstellen, es werden durch mein Code beliebig viele Plots dargestellt, die Bedingung lautet, wenn Korrelationskoeffizient größer als 0.5 ist, soll er mir die beiden Variablen übergeben, damit ich es graphisch darstellen kann. Und mit dem momentanen Excel Datei sind es 7 Plots die dargestellt werden.