Problem mit matplotlib und SVG

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
frixhax
User
Beiträge: 39
Registriert: Donnerstag 21. April 2011, 14:06

Hallo zusammen!
Ich benutze matplotlib aus pylab (import pylab as plt) um zwei Listen gegeneinander zu plotten. Dazu verwende ich

Code: Alles auswählen

plt.errorbar(liste1, liste2, yerr=errorliste, fmt='k-')
und speichere das ganze über

Code: Alles auswählen

plt.savefig('datei.svg')
als File.
Leider werden dabei Teile der Kurve nicht geplotten sondern fehlen einfach wie abgeschnitten - die Bereiche des Diagramms sind einfach weiß. Das tritt innerhalb der Achsen am rechten und unteren Rand des Plots auf, links und oben geht die Kurve bis an die Achsen. Und es passiert ausschließlich, wenn ich als SVG speichere. Wähle ich PS, EPS, PDF oder PNG sehen die Plots aus wie sie sollen, leider würde ich aber gerne SVG nutzen.
Kennt jemand das Problem und hat eine Lösung?
Viele Grüße
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Hi,

ich kann das bei mir leider nicht nachvollziehen. Kannst du mal ein lauffähiges Beispiel geben, wo der Fehler auftritt? Ansonsten wären noch OS und Versionen von Python und Matplotlib interessant.

Eventuell stimmt das Backend nicht. Tritt das Problem noch auf, wenn du folgende zwei Zeilen ganz an den Anfang packst:

Code: Alles auswählen

import matplotlib
matplotlib.use('Agg')
Grüße
Gerrit
Benutzeravatar
frixhax
User
Beiträge: 39
Registriert: Donnerstag 21. April 2011, 14:06

Hi!
Ja, das Problem tritt auch dann noch auf. Python ist Version 2.5.2, matplotlib 0.91.4

Der Minimalcode waere z.B.

Code: Alles auswählen

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

x = [1,2,3,4,5,6,7,8]
y = [4,3,2,1,2,3,4,5]
plt.clf()
plt.figure(1)
plt.plot(x, y, 'r-')
plt.savefig('plottest.svg', bbox_inches='tight', pad_inches=0)
Da fehlt bei mir der untere und der rechte Datenpunkt im Plot (nur bei svg!). Ob ich bbox_inches und pad_inches weglasse, macht keinen Unterschied.

Viele Gruesse
BlackJack

Kann ich mit `matplotlib` Version 0.99.1.1 nicht nachvollziehen. SVG in Inkscape und Chromium angeschaut.
Benutzeravatar
frixhax
User
Beiträge: 39
Registriert: Donnerstag 21. April 2011, 14:06

Ich Trottel -.- Danke! Ich hatte zuviel Vertrauen in eog, den Gnome image viewer ;) Unter Windows klappt's ohne Probleme, ich werd also einen anderen Viewer für Linux suchen.
Antworten