#python #matplotlib
#python #matplotlib
Вопрос:
Я знаю, что это было проблемой раньше в matplotlib — но это должно было быть исправлено, верно?
Когда я выполняю. мой пример кода для точечной диаграммы:
%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")
полосы ошибок не центрированы по точкам. Я использую matplotlib 3.02 — Anaconda почему-то не распознает, что там 3.03.
Ответ №1:
Я нашел следующий обходной путь: указание linewidth=1
для строки ошибок делает их центрированными. Я попробовал несколько значений, и все, что ниже 1.5, работает по центру, но все, что выше 1.5 (включительно), смещает его от центра. Я не знаю причины. Это может быть связано с 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)
Ответ №2:
Сохранение как .svg
решает проблему для меня. При использовании jupyter notebook график отображается с нецентрированными полосами ошибок, но он сохранен правильно.
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')