Normalerweise verwende ich ax.set_rasterized(True)
, um die Figur so zu rastern, dass sie beim Speichern wie im Format eps
mit Transparenz umgehen kann, aber die Rasterung verwischt auch die Achsenbeschriftungen und Strichmarkierungen, also gibt es eine Möglichkeit, nur Patches innerhalb der Achse zu rastern Zahl? Oder gibt es ein besseres Format zum Exportieren von eps-Format mit Transparenz? Vielen Dank.Wie kann man ein Diagramm besser rasterisieren, ohne die Beschriftungen in Matplotlib zu verwischen?
Wie kann man ein Diagramm besser rasterisieren, ohne die Beschriftungen in Matplotlib zu verwischen?
Antwort
Als matplotlib Artists gerastert werden kann, jede Klasse, die von Künstlern (http://matplotlib.sourceforge.net/api/artist_api.html) kann mit dem Schlüsselwort rasterized
Satz True
gerastert werden. Sie können also nur Ihre Patches rastern.
Ich habe gerade einige Kombinationen ausprobiert und es scheint zu funktionieren. Die Qualität scheint jedoch nicht sehr gut zu sein (siehe auch http://www.mail-archive.com/[email protected]/msg13276.html).
import numpy as np
import matplotlib.pyplot as plt
def add_patch(ax, **kwargs):
if 'rasterized' in kwargs and kwargs['rasterized']:
ax.set_rasterization_zorder(0)
ax.fill_between(np.arange(1, 10), 1, 2, zorder=-1, **kwargs)
ax.set_xlim(0, 10)
ax.set_ylim(0, 3)
if 'alpha' in kwargs and kwargs['alpha'] < 1:
txt = 'This patch is transparent!'
else:
txt = 'This patch is not transparent!'
ax.text(5, 1.5, txt, ha='center', va='center', fontsize=25, zorder=-2,
rasterized=True)
fig, axes = plt.subplots(nrows=4, sharex=True)
add_patch(axes[0], alpha=0.2, rasterized=False)
add_patch(axes[1], alpha=0.2, rasterized=True)
add_patch(axes[2], rasterized=False)
add_patch(axes[3], rasterized=True)
plt.tight_layout()
plt.savefig('rasterized_transparency.eps')
I umgewandelt, um die eps
zu png es im Browser anzuzeigen:
Siehe auch: How to save figures to pdf as raster images in matplotlib.
Danke, ich werde Ihr Beispiel ausprobieren und es so schnell wie möglich auf meine eigenen Codes testen lassen. Antwort wird bis dahin angenommen ;-). – nye17
Die Ergebnisse sind besser, wenn Sie dpi angeben - das scheint einen ziemlich niedrigen Wert zu haben. Ändern Sie beispielsweise die letzte Zeile zu
plt.savefig('rasterized_transparency.eps',dpi=200)
und die Datei wächst auf 4,5 M und sieht in Acrobat bis zu 200% Vergrößerung in Ordnung. Ich stimme jedoch zu, dass es wahrscheinlich kompaktere Formate gibt, die Transparenz unterstützen.
- 1. Wie aktualisiert man ein Diagramm in Matplotlib?
- 2. So erstellen Sie ein Diagramm in Matplotlib ohne Pyplot verwenden
- 3. matplotlib: Histogramm- und Bin-Beschriftungen
- 4. Wie zeichne ich ein Streudiagramm mit Beschriftungen im Google-Diagramm?
- 5. Kann iTextSharp rasterisieren/in JPEG oder ein anderes Bildformat exportieren?
- 6. Animiere ein rotierendes 3D - Diagramm in Matplotlib
- 7. Wie kommentierte Beschriftungen zu einem 3D-Matplotlib-Streudiagramm?
- 8. Wie beschränke ich die Rahmengröße in einem Matplotlib-Diagramm?
- 9. matplotlib zeigt kein Diagramm
- 10. matplotlib ein Array in ein parametrisches Diagramm drehen
- 11. Kreisdiagramm ohne Beschriftungen in JFreeChart
- 12. Wie lösche oder schließe ich ein Diagramm in Matplotlib?
- 13. matplotlib/python - Wie zeichne ich ein Diagramm? Mittelwert ± 3 * Standardabweichung
- 14. Entfernen Sie Xticks in einem Matplotlib-Diagramm?
- 15. Wie zeichne ich ein log-normalisiertes Imshow-Diagramm mit einer Farbleiste, die die Rohdaten in Matplotlib
- 16. Wie ändert man die Größe der Grafik in Matplotlib, ohne die Diagramme zu verändern?
- 17. matplotlib zeigt kein Diagramm an()
- 18. Wie kann ich in EaselJS Pixel Art skalieren, ohne es zu verwischen?
- 19. Daten in einem Diagramm in Matplotlib umkreisen
- 20. Wie benutzt man opencv (Python) um Gesichter zu verwischen?
- 21. Wie berechnet man die Kaprekar-Zahlen besser?
- 22. Wie kann man einen internen Link zu einer Überschrift in sphinx restructuredtext erstellen, ohne willkürliche Beschriftungen zu erstellen?
- 23. Wie man ein anpassbares Diagramm erstellt
- 24. Matplotlib-Diagramm Zoomen mit Scrollrad
- 25. wie man das Diagramm/Diagramm zu Arbeitsblatt/excelsheet mit Python
- 26. Wie erstellt man ein Diagramm von summaryRprof?
- 27. Wie man ein vorhandenes Diagramm dynamisiert
- 28. Wie man Backends in Matplotlib/Python
- 29. matplotlib imshow(): Wie animiert man?
- 30. Matplotlib Candlestick (Intraday) Diagramm ist ein großer Blob
Ich entdeckte gerade die set_zorder und set_rasterization_zorder, ich denke, sie wären hilfreich, aber immer noch graben die Dokumentation, noch wird jede Hilfe geschätzt. – nye17
Kannst du 'pdf' nicht benutzen? Es würde die Transparenz ohne Rasterung erhalten. – Avaris
@Avaris leider kann ich nicht pdf verwenden, aber muss bei eps bleiben, so scheint die Rasterung der einzige Ausweg zu sein. – nye17