Python plotagem: Como posso fazer parada matplotlib.pyplot forçando o estilo dos meus marcadores?

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

  •  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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top