Utilizo ax.set_rasterized(True)
para rasterizar la figura para que pueda manejar la transparencia cuando se guarda como en el formato eps
, pero la rasterización también difumina las etiquetas del eje y las etiquetas, así que hay una manera de rasterizar solo parches dentro del eje en lugar de ¿figura? o hay una mejor solución para exportar formato eps con transparencia? Gracias.¿Cómo mejorar la trama de una trama sin difuminar las etiquetas en matplotlib?
Respuesta
Como matplotlib Artists se puede rasterizar, cualquier clase derivada de artista (http://matplotlib.sourceforge.net/api/artist_api.html) se pueden rasterizar con la palabra clave rasterized
conjunto a True
. Entonces solo puedes rasterizar tus parches.
Acabo de probar algunas combinaciones y parece que funciona. Sin embargo, la calidad no parece ser muy buena (consulte también 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')
que convierte la eps
a PNG para mostrar en el navegador:
Consulte también: How to save figures to pdf as raster images in matplotlib.
Gracias, probaré su ejemplo y lo probaré en mis propios códigos lo antes posible. La respuesta será aceptada para entonces ;-). – nye17
Los resultados son mejores si especifica ppp, que parece tener un valor por defecto muy bajo. Por ejemplo, cambiar la última línea para
plt.savefig('rasterized_transparency.eps',dpi=200)
y el archivo crece a 4,5 M, y se ve bien en Acrobat hasta un 200% de aumento. Sin embargo, estoy de acuerdo en que probablemente existan formatos más compactos que respalden la transparencia.
- 1. Guardando las anotaciones de la trama
- 2. Matplotlib savefig con una leyenda fuera de la trama
- 3. Cómo suavizar la trama del contorno de matplotlib?
- 4. Cómo hacer una trama 4d usando Python con matplotlib
- 5. ¿Cómo le digo a Matplotlib que cree una segunda (nueva) trama y luego la trama en la anterior?
- 6. histograma de la trama de datetime.time python/matplotlib
- 7. Python/Matplotlib - Cambiar el tamaño relativo de una trama secundaria
- 8. trama ggplot2 sin ejes, leyendas, etc.
- 9. Haciendo una trama en Qt
- 10. ¿Cómo mostrar las etiquetas de la tira debajo de la trama al facetear?
- 11. Diagrama de núcleo: cómo ocultar la trama, el eje y las etiquetas?
- 12. UIView trama de fondo
- 13. Gráficos de trama en xterm?
- 14. aplanar una trama de datos
- 15. ¿Cómo se crea una leyenda para una trama de contorno en matplotlib?
- 16. Ajustar la altura de una trama secundaria en forma absoluta (no relativa) en Matplotlib
- 17. MATLAB título trama secundaria y etiquetas de los ejes
- 18. una trama de datos en I
- 19. seleccionar sólo las columnas numéricas de una trama de datos
- 20. mapeo sobre las filas de una trama de datos
- 21. Matlab: la trama de superficie no funciona
- 22. ¿Cómo se determina la longitud de una trama Ethernet II?
- 23. ¿Cómo hacer que la trama no desaparezca?
- 24. ¿Cómo puedo eliminar los márgenes de la trama entre los ejes de la trama y los contenidos de la trama en R?
- 25. ¿Cómo mejorar un mapa de trama espacial utilizando ggplot en comparación con spplot?
- 26. Cómo desenlazar la textura de una memoria intermedia de trama
- 27. Cambiar el color de fondo de los planos de los ejes de una trama 3D matplotlib
- 28. R iterar sobre columnas trama de datos
- 29. indexar una trama de datos pandas
- 30. pandas: trama de datos única
Acabo de descubrir el set_zorder y set_rasterization_zorder, creo que serían útiles, pero aún se está extrayendo la documentación, aún se agradece cualquier ayuda. – nye17
¿No puedes usar 'pdf'? Preservaría la transparencia sin rasterización. – Avaris
@Avaris. Desafortunadamente no puedo usar el pdf, pero tengo que seguir con los eps, así que la rasterización parece ser la única salida. – nye17