我希望将两个阵列的位置可视化。我的表看起来像这样
Number Description value_1 value_2 err_1 err_2
1 descript_1 124.46 124.46 22.55 54.2
2 Descript_2 8.20 50.2 0.37 0.1
3 Descript_2 52.55 78.3 3.77 2.41
4 Descript_2 4.33 778.8 0.14 1.78
我基本上想要的是这样的:
所以在这个情节中,每个点基本上都有三个属性: 1. xerror bar 2. yerror酒吧 3.描述这一点代表什么。
我有一种感觉,这可以用matplotlib优雅地完成,虽然我尝试了一些错误栏的东西,并没有完全给我我期望的东西。我还没有找到如何将标题放在情节中。
答案 0 :(得分:8)
听起来你想要这样的东西?
import matplotlib.pyplot as plt
x = [124.46, 8.20, 52.55, 4.33]
y = [124.46, 50.2, 78.3, 778.8]
xerr = [54.2, 0.1, 2.41, 1.78]
yerr = [22.55, 0.37, 3.77, 0.14]
descrip = ['Atom 1', 'Atom 2', 'Atom 3', 'Atom 4']
plt.errorbar(x, y, xerr, yerr, capsize=0, ls='none', color='black',
elinewidth=2)
for xpos, ypos, name in zip(x, y, descrip):
plt.annotate(name, (xpos, ypos), xytext=(8, 8), va='bottom',
textcoords='offset points')
plt.show()
errorbar
就像plot
一样。如果您想要一个“散点图”,那么您需要指定linestyle='none'
(或等效地,ls='none'
)。根据您的绘图,您不希望在错误栏上设置上限,因此我指定了capsize=0
。同样,你似乎想要错误的行使用相当粗的行,因此elinewidth=2
。
如果您想要除错误栏之外的标记,只需将marker='o'
(或您想要的任何标记样式)指定为errorbar
。
annotate
是在地块上注释点的最简单方法。在这里,我已经指定注释应该放在每个测量的右上方8 points 。
答案 1 :(得分:0)
不会
import matplotlib.pyplot as plt
x = [100, 200, 300, 400]
y = [100, 200, 300, 400]
xerr = [100, 100, 100, 100]
yerr = [20, 20, 20, 20]
plt.errorbar(x, y, xerr, yerr, ls='none')
plt.show()
表示错误条位于错误的轴上?
matplotlib.pyplot.errorbar(x, y, yerr=None, xerr=None, fmt=u'', ecolor=None, elinewidth=None, capsize=3, barsabove=False, lolims=False, uplims=False, xlolims=False, xuplims=False, errorevery=1, capthick=None, hold=None, **kwargs)
请注意,yerr先于xerr,所以
plt.errorbar(x, y, xerr, yerr, ls='none')
使你的误差条向后 - yerr = xerr,xerr = yerr。 是使用命名args的好时机:
plt.errorbar(x, y, xerr=xerr, yerr=yerr, ls='none')