27 votes

changer la force de l'anti-crénelage dans matplotlib

Est-il possible d'augmenter l'anticrénelage dans matplotlib ? Je peux toujours voir un certain aliasing dans mes données, j'ai essayé plusieurs backends et il est toujours là. L'indicateur d'anti-crénelage des lignes est activé.

Vous pouvez voir ici ce que je veux dire

enter image description here

C'est un exemple tiré d'une capture d'écran. Ce n'est probablement pas le meilleur exemple mais je pense que l'on peut voir les escaliers dans la ligne. Elle a été prise avec le backend wxagg.

J'utilise matplotlib version 1.01 avec Windows 7.

Mise à jour : Je n'ai plus le code qui a produit l'image précédente, mais j'ai toujours le problème. Ci-dessous un exemple de code simple qui montre l'aliasing.

import numpy as np
import matplotlib
matplotlib.use('wxAgg')
import matplotlib.pyplot as pl
print 'Backend:', pl.get_backend()

x = np.linspace(0,6,100)
y = np.sin(x)

for a in range(10):
    pl.plot( x, a/10.*x, linewidth=1)

pl.show()

Il imprime Backend: WXAgg Et le graphique résultant ressemble à ce qui suit. aliasing

En particulier, la courbe rouge inférieure montre un aliasing clair.

3voto

Simon Points 908

L'image que vous avez ajoutée à votre question est déjà parfaitement anti-aliasée. Il n'est pas possible de faire mieux. Jetez un coup d'œil à une version zoomée de l'image :

Upscaled version of the image in question

3voto

fplandes Points 21

Si vous enregistrez l'image en tant que fichier .svg, vous obtiendrez une précision infinie. Vous pouvez ensuite éditer ce fichier .svg avec quelque chose comme InkScape, et obtenir le degré de précision/antialiasing que vous souhaitez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X