2009-02-13 13 views
10

Sto provando a tracciare un gruppo di punti dati (molte migliaia) in Python usando matplotlib quindi ho bisogno che ogni indicatore sia molto piccolo e preciso. Come posso ottenere il più piccolo marker più semplice possibile? Io uso questo comando per tracciare i miei dati:Plottaggio Python: come posso rendere matplotlib.pyplot smettere di forzare lo stile dei miei marcatori?

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

allora posso guardare sia con pl.show() e quindi salvarlo. Oppure utilizzare direttamente plt.savefig('filename.ps') nel codice per salvarlo. Il problema è questo: quando uso il pl.show() per visualizzare il file nella GUI sembra ottimo con piccoli segni neri minuscoli, tuttavia quando salvo dalla GUI show() in un file o uso direttamente savefig e poi visualizzo lo ps che ho creato sembra diverso ! Ogni pennarello ha guadagnato un alone blu attorno ad esso (come se fosse iniziato in ogni punto per collegarli con le linee blu predefinite, ma non lo ha fatto) e lo stile è completamente sbagliato. Perché cambia lo stile quando viene salvato? Come posso impedire a Python di forzare lo stile dei marcatori? E sì, ho visto alcuni pacchetti alternativi come CairoPlot, ma per il momento voglio continuare a utilizzare matplotlib.

Aggiornamento: Si scopre che il salvataggio in PNG fa prima i colori risultano bene, ma costringe una conversione dell'immagine quando voglio salvarlo di nuovo come un .ps successiva (per l'inclusione in un PDF) e poi perdo la qualità. Come conservare la natura vettoriale del file e ottenere la formattazione corretta?

+0

Bene, per i punti di caricamento, la versione trunk di CairoPlot ha la classe ScatterPlot. Usando questo puoi definire il raggio del marker, quindi potresti semplicemente impostarlo su 1 in quanto sarebbe l'opzione più piccola. C'è qualche motivo speciale per non utilizzare CairoPlot? – Rodrigo

risposta

11

Per l'output vettorizzato dall'aspetto piacevole, non utilizzare lo stile dell'indicatore '.'. Utilizzare per es. 'o' (cerchio) o 's' (quadrato) (vedi help(plot) per le opzioni) e impostare l'argomento markersize parola chiave per qualcosa opportunamente piccolo, ad esempio:

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

Che '.' (punto) produce meno piacevoli risultati potrebbe essere interpretato come un bug in matplotlib, ma allora, che cosa significa "" point "in un formato grafico vettoriale?

2

In caso contrario, provare a salvare in un motore di rasterizzazione, salvarlo in un file PNG e verificare se questo lo risolve. Se hai bisogno di un grafico vettoriale, prova a salvare in PDF e a convertire con un'utilità esterna. Ho anche avuto problemi prima con il motore PS che sono stati risolti salvando con i motori Agg o PDF e convertendoli esternamente.

+0

Sì, questo lavoro funziona. A proposito, facciamo lo stesso tipo di lavoro. – Alex

6

Hai provato la forma del punto ','? Crea "pixels" (piccoli punti, anziché forme).

Si può giocare anche con l'opzione markersize, con questa forma?

Problemi correlati