Je sais que cela a déjà été un problème dans matplotlib - mais cela aurait dû être corrigé, non?

Quand j'exécute. mon exemple de code pour un nuage de points:

%matplotlib inline
import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
import numpy as np


plt.xlabel(r'$Label \, in \, Latex$')
plt.ylabel(r'$Label \, in \, Latex$')
plt.title(r'$Title \, in \, Latex$')
#plt.text(1, 15, r'$Latex \, Example \, Text$')

x=[1, 2, 3, 4]
y=[1, 4, 9, 16]


plt.axis([0, 6, 0, 20])
plt.errorbar(x, y, yerr=1, fmt='.k', capsize=3)
plt.savefig('foo.pdf', bbox_inches="tight")

Les barres d'erreur ne sont pas centrées sur les points. J'utilise matplotlib 3.02 - Anaconda ne reconnaît pas en quelque sorte qu'il y a 3.03.

3
Staedy 12 mars 2019 à 17:00

2 réponses

Meilleure réponse

J'ai trouvé le travail suivant: La spécification d'un linewidth=1 pour la barre d'erreur les rend centrés. J'ai essayé plusieurs valeurs et tout ce qui est inférieur à 1,5 fonctionne centré mais tout ce qui est supérieur à 1,5 (inclus) le fait décentrer. Je ne connais pas la raison. Cela pourrait être lié au dpi

import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
import numpy as np

plt.xlabel(r'$Label \, in \, Latex$')
plt.ylabel(r'$Label \, in \, Latex$')
plt.title(r'$Title \, in \, Latex$')
#plt.text(1, 15, r'$Latex \, Example \, Text$')

x=[1, 2, 3, 4]
y=[1, 4, 9, 16]

plt.axis([0, 6, 0, 20])
plt.errorbar(x, y, yerr=1, lw=1, fmt='.k', capsize=3)

enter image description here

2
Sheldore 12 mars 2019 à 14:19

L'enregistrement sous .svg résout le problème pour moi. En utilisant le cahier jupyter, le tracé est affiché avec des barres d'erreur non centrées mais il est enregistré correctement.

import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
import numpy as np

plt.xlabel(r'$Label \, in \, Latex$')
plt.ylabel(r'$Label \, in \, Latex$')
plt.title(r'$Title \, in \, Latex$')
#plt.text(1, 15, r'$Latex \, Example \, Text$')

x=[1, 2, 3, 4]
y=[1, 4, 9, 16]

plt.axis([0, 6, 0, 20])
plt.errorbar(x, y, yerr=1, lw=2, fmt='o', capsize=3)

plt.savefig('TEST.svg', bbox_inches='tight', format='svg')
0
Balou 7 août 2019 à 12:25