Matplotlib - 误差条不在点的中心

6

我知道在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版本。

2个回答

6
我找到了以下的解决方法:指定error bar的linewidth=1可以使其居中。我尝试了几个值,任何小于1.5的值都会使其居中,但任何大于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)

enter image description here


1
保存为.svg文件对我来说解决了这个问题。使用jupyter笔记本,图表显示的误差条不居中,但保存正确。
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')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接