Seite 1 von 1

Plots in Pdf abspeichern

Verfasst: Montag 4. Juni 2018, 14:04
von mgm841
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.

Re: Plots in Pdf abspeichern

Verfasst: Montag 4. Juni 2018, 14:25
von Sirius3
Nein, er speichert jeden Plot, aber immer unter dem selben Namen.

Aber für Deinen Fall gibt es auch ein Beispiel: Multipage PDF.

Re: Plots in Pdf abspeichern

Verfasst: Montag 4. Juni 2018, 14:28
von ThomasL
@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

Re: Plots in Pdf abspeichern

Verfasst: Montag 4. Juni 2018, 14:40
von mgm841

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")

Re: Plots in Pdf abspeichern

Verfasst: Montag 4. Juni 2018, 14:46
von mgm841
In meinem Fall werden 7 Plots zwar generiert, aber nur einer in Pdf abgespeichert. Ich möchte alle in einem Pdf Datei haben. Der nächste Step wäre, je 4 Plots auf einer Pdf Seite abzuspeichern.

Re: Plots in Pdf abspeichern

Verfasst: Montag 4. Juni 2018, 14:52
von Sirius3
ThomasL hat geschrieben: Montag 4. Juni 2018, 14:28 @Sirius aber nur, wenn das plt.savefig("test.pdf", dpi =300) innerhalb der Schleife liegt
das war im ersten Post auch der Fall (sieht man, wenn man sich den HTML-Quelltext anschaut).

Re: Plots in Pdf abspeichern

Verfasst: Montag 4. Juni 2018, 15:07
von ThomasL
vielleicht hilft ja dieses Beispiel
https://matplotlib.org/examples/pylab_e ... e_pdf.html

Re: Plots in Pdf abspeichern

Verfasst: Montag 4. Juni 2018, 15:35
von Sirius3
@ThomasL: was ist der Sinn, einen Link, den ich schon gepostet habe, nochmals zu posten?

Re: Plots in Pdf abspeichern

Verfasst: Montag 4. Juni 2018, 16:13
von ThomasL
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?

Re: Plots in Pdf abspeichern

Verfasst: Montag 4. Juni 2018, 16:17
von Sirius3
@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.

Re: Plots in Pdf abspeichern

Verfasst: Dienstag 5. Juni 2018, 08:24
von mgm841
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.

Re: Plots in Pdf abspeichern

Verfasst: Dienstag 5. Juni 2018, 10:10
von Sirius3
Im Beispiel werden 3 Plots erzeugt und ins PDF gespeichert, jetzt mußt Du nur noch dieses Plot-Generieren und -Speichern in Deine Schleife einbauen.

Re: Plots in Pdf abspeichern

Verfasst: Dienstag 5. Juni 2018, 10:23
von __blackjack__
@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.

Re: Plots in Pdf abspeichern

Verfasst: Dienstag 5. Juni 2018, 11:06
von mgm841
@__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.

Re: Plots in Pdf abspeichern

Verfasst: Dienstag 5. Juni 2018, 12:08
von Sirius3
Es werden so viele Plots erstellt, wie Du savefig-Aufrufe hast. Wieviele das genau sind, das legst Du durch Dein Programm fest.