trazado de Python: ¿Cómo puedo hacer matplotlib.pyplot dejar de forzar el estilo de mis marcadores?

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

  •  23-08-2019
  •  | 
  •  

Pregunta

Estoy tratando de trazar un montón de puntos de datos (muchos miles) en Python usando matplotlib así que necesito cada marcador que ser muy pequeños y precisos. ¿Cómo consigo el marcador más sencilla posible más pequeño? Yo uso este comando para trazar mis datos:

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

A continuación, puedo mirarlo ya sea con pl.show() y luego guardarlo. O usar directamente plt.savefig('filename.ps') en el código para guardarlo. El problema es el siguiente: cuando uso pl.show() para ver el archivo en la interfaz gráfica de usuario se ve muy bien con pequeñas manchas negras pequeñas, sin embargo, al guardar desde la GUI show() a un archivo o uso savefig directamente y luego ver el ps creé se ve diferente ! Cada marcador se ha ganado un pequeño halo azul alrededor de él (como si se ha iniciado en cada punto para conectarlos con las líneas azules por defecto, pero no lo hizo) y el estilo es todo mal. ¿Por qué cambia el estilo cuando se guarda? ¿Cómo dejo de pitón de forzar el estilo de los marcadores? Y sí he mirado algunos paquetes alternativos como CairoPlot , pero quieren seguir usando matplotlib por ahora.

Actualización: Resulta que el salvar a PNG primero hace que los colores resultan bien, pero obliga a una transformación de la imagen cuando quiero volver a guardarlo como un .ps posterior (para la inclusión en un PDF) y después de que pierda calidad. ¿Cómo puedo conservar la naturaleza vectorial del archivo y obtener el formato correcto?

¿Fue útil?

Solución

Para la salida vectorizada de aspecto agradable, no utilizan el estilo marcador '.'. Utilizar, por ejemplo, 'o' (círculo) o 's' (cuadrado) (ver help(plot) para las opciones) y establecer la palabra clave markersize argumento a algo adecuadamente pequeño, por ejemplo:.

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

Eso '.' (punto) produce resultados menos buenos podrían ser interpretadas como un error en matplotlib, pero entonces, ¿qué debe "punto" significa en un formato gráfico vectorial?

Otros consejos

¿Has probado el punto de forma ','? Se crea " píxeles " (pequeños puntos, en lugar de formas).

Se puede jugar con la opción markersize así, con esta forma?

Si usted no tiene, usted debe tratar de ahorrar en un motor de rasterización - guardarlo en un archivo PNG y ver si se soluciona el problema. Si necesita una parcela de vectores, intente guardar a PDF y la conversión con una utilidad externa. También he tenido problemas antes con el motor de PS que se resolvieron por el ahorro de los motores PDF o Agg y convirtiendo el exterior.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top