Python plotting: Comment puis-je faire matplotlib.pyplot cesser de forcer le style de mes marqueurs?

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

  •  23-08-2019
  •  | 
  •  

Question

Je suis en train de tracer un tas de points de données (plusieurs milliers) en Python en utilisant matplotlib donc j'ai besoin chaque marqueur très petit et précis. Comment puis-je obtenir le plus petit marqueur le plus simple, possible? J'utilise cette commande pour tracer mes données:

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

Alors je peux regarder soit avec pl.show() puis enregistrez-le. Ou utilisez directement plt.savefig('filename.ps') dans le code pour l'enregistrer. Le problème est le suivant: quand j'utilise pl.show() pour afficher le fichier dans l'interface graphique, il ressemble beaucoup avec de petits minuscules taches noires, mais quand je sauverai de l'interface graphique show() à un fichier ou utiliser savefig directement, puis voir la ps je l'ai créé est différent ! Chaque marqueur a gagné un petit halo bleu autour d'elle (comme si elle a commencé à chaque point de les relier avec les lignes bleues par défaut, mais ne l'a pas) et le style est tout faux. Pourquoi faut-il changer le style lors de l'enregistrement? Comment puis-je arrêter python de forcer le style des marqueurs? Et oui, je l'ai regardé certains forfaits alternatifs comme CairoPlot , mais je veulent continuer à utiliser matplotlib pour l'instant.

Mise à jour: Il se avère que la sauvegarde au format PNG fait d'abord les couleurs se révèlent bien, mais il force une conversion de l'image quand je veux enregistrer à nouveau comme .ps plus tard (pour l'inclusion dans un fichier PDF), puis je perds la qualité. Comment puis-je conserver la nature vectorielle du fichier et obtenir la mise en forme à droite?

Était-ce utile?

La solution

Pour la sortie vectorisé beau, ne pas utiliser le style de marqueur '.'. Utiliser par exemple 'o' (cercle) ou 's' (carré) (voir help(plot) pour les options) et définissez l'argument de mot-clé markersize quelque chose convenablement petit, par exemple:.

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

Ce '.' (point) produit des résultats moins agréables pourraient être interprétées comme un bogue dans matplotlib, mais alors, que devrait "point" signifie dans un format graphique vectoriel?

Autres conseils

Avez-vous essayé la forme de point de ','? Il crée " pixels " (petits points, au lieu de formes).

Vous pouvez jouer avec l'option markersize ainsi, avec cette forme?

Si vous n'avez pas, vous devriez essayer d'enregistrer dans un moteur de rastérisation - enregistrer dans un fichier PNG et voir si cela résout le problème. Si vous avez besoin d'un terrain vecteur, essayez d'enregistrer au format PDF et convertir avec un utilitaire externe. J'ai aussi eu des problèmes avec le moteur avant PS qui ont été résolus en sauvant avec le Agg ou les moteurs PDF et la conversion de l'extérieur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top