Python plotagem: Como posso fazer parada matplotlib.pyplot forçando o estilo dos meus marcadores?
-
23-08-2019 - |
Pergunta
Eu estou tentando traçar um monte de pontos de dados (muitos milhares) em Python utilizando matplotlib por isso preciso cada marcador de ser muito pequeno e preciso. Como faço para obter o menor marcador mais simples possível? Eu uso este comando para traçar os meus dados:
matplotlib.pyplot( x , y ,'.',markersize=0.1,linewidth=None,markerfacecolor='black')
Então eu posso olhar para ele ou com pl.show()
e depois salvá-lo. Ou usar diretamente plt.savefig('filename.ps')
no código para salvá-lo. O problema é este: quando eu uso pl.show()
para ver o arquivo na GUI parece ótimo com pequenas pequenas marcas negras, no entanto, quando eu salvar da GUI show()
para um arquivo ou usar diretamente savefig
e depois ver o ps
eu criei parece diferente ! Cada marcador tem vindo a ganhar um pouco de halo azul em torno dele (como se começou a cada ponto para conectá-los com as linhas azuis padrão, mas não o fez) e o estilo é tudo errado. Por que mudar o estilo quando salvo? Como faço para parar de python de forçar o estilo dos marcadores? E sim, eu olhei para alguns pacotes alternativos como CairoPlot , mas eu quiser continuar usando matplotlib por agora.
Update: Acontece que a salvar para PNG primeiro torna as cores acabam bem, mas ele força uma conversão da imagem quando eu quero salvá-lo novamente como um .ps
posterior (para inclusão em um PDF) e então eu perder qualidade. Como preservar a natureza vector do arquivo e obter a formatação certo?
Solução
Para vetorizado saída de aparência agradável, não use o estilo de marcador '.'
. Uso e.g. 'o'
(círculo) ou 's'
(quadrado) (ver help(plot)
para as opções) e definir o markersize
chave argumento para algo adequadamente pequeno, por exemplo:.
plot(x, y, 'ko', markersize=2)
savefig('foo.ps')
Isso '.'
(ponto) produz menos agradáveis ??resultados poderia ser interpretado como um bug no matplotlib, mas, em seguida, o deve "point" média em um formato gráfico vetorial?
Outras dicas
Você já tentou a forma ponto ','
? Ele cria " pixels " (pequenos pontos, em vez de formas).
Você pode jogar com a opção markersize
, bem como, com esta forma?
Se você não tiver, você deve tentar salvar em um motor rasterizing - salve-o em um arquivo PNG e ver se isso resolve o problema. Se você precisa de um lote do vetor, tente salvar em PDF e converter com um utilitário externo. Eu também tive problemas antes com o motor PS que foram resolvidas por salvar com o Agg ou motores de PDF e convertê externamente.