Python Plotten: Wie kann ich zwingen den Stil meiner Marker matplotlib.pyplot zu stoppen?

StackOverflow https://stackoverflow.com/questions/544542

  •  23-08-2019
  •  | 
  •  

Frage

Ich versuche, eine Reihe von Datenpunkten zu plotten (viele Tausende) in Python mit matplotlib also muss ich jeden Marker sein, sehr klein und präzise. Wie erhalte ich die kleinste einfachste Markierung möglich? Ich verwende diesen Befehl, meine Daten zu zeichnen:

 matplotlib.pyplot( x , y ,'.',markersize=0.1,linewidth=None,markerfacecolor='black')

Dann kann ich es auch dreht entweder mit pl.show() und speichern Sie es dann. Oder direkt plt.savefig('filename.ps') im Code verwenden, um sie zu speichern. Das Problem ist folgendes: wenn ich pl.show() verwenden, um die Datei in der GUI es sehen können mit kleinen winzigen schwarzen Flecken sieht gut aus aber, wenn ich von der show() GUI in einer Datei speichern oder direkt verwenden savefig und dann die ps sehen Ich habe es sieht anders aus ! Jeder Marker hat einen kleinen blauen Halo umgeben gewonnen (als ob es an jedem Punkt begann sie mit den Standard-blauen Linien zu verbinden, aber nicht) und der Stil ist alles falsch. Warum ist es, den Stil ändern, wenn gespeichert? Wie verhindere ich, Python, den Stil des Markers aus zwingen? Und ja, ich habe bei einigen alternativen Paketen sieht aus wie CairoPlot , aber ich behalten möchten matplotlib mit für jetzt.

Update: Es stellt sich heraus, dass das Speichern zu PNG zuerst die Farben macht in Ordnung herausstellen, aber es zwingt, eine Umwandlung des Bildes, wenn ich es als .ps wieder speichern möchten später (für die Aufnahme in einer PDF) und dann verliere ich Qualität. Wie kann ich die Vektornatur der Datei erhalten und die richtige Formatierung erhalten?

War es hilfreich?

Lösung

Für gut aussehende vektorisiert Ausgang, verwenden Sie nicht den '.' Marker Stil. Verwenden z.B. 'o' (Kreis) oder 's' (Quadrat) (help(plot) für die Optionen sehen) und stellen Sie das markersize Schlüsselwort-Argument, um etwas in geeigneter Weise klein, z.

plot(x, y, 'ko', markersize=2)
savefig('foo.ps')

Das '.' (Punkt) erzeugt weniger gute Ergebnisse als einen Fehler in matplotlib ausgelegt werden könnte, aber dann, was sollte "Punkt" bedeutet in einem Vektorgrafikformat?

Andere Tipps

Haben Sie die ',' Punktform versucht? Es schafft " Pixel " (kleine Punkte anstelle von Formen).

Sie können mit der Option markersize spielen auch bei dieser Form?

Wenn Sie nicht haben, sollten Sie versuchen, in einem Rasterung Motor Sparend - es zu einer PNG-Datei speichern und sehen, ob es das behebt. Wenn Sie einen Vektorplot benötigen, versuchen zu PDF speichern und mit einem externen Dienstprogramm umwandelt. Ich habe auch Probleme, bevor sie mit dem PS-Motor, der durch die Einsparung mit dem Agg oder PDF-Motoren und die Umwandlung von außen gelöst wurden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top