Python 对添加到stripplot的errorbar()的查询

Python 对添加到stripplot的errorbar()的查询,python,matplotlib,seaborn,Python,Matplotlib,Seaborn,我一直在努力为我的分类变量(x=Type)获取所需的errorbars,该变量有两个不同的标记形状(每个类别A和B),errorbar颜色与相应标记颜色的颜色相匹配 (即palete=dict(A=“k”,B=“r”)) 以下是我的数据: Type Y Err A 3 0.2 A 3.1 0.8 A 4.3 0.6 B

我一直在努力为我的分类变量(x=Type)获取所需的errorbars,该变量有两个不同的标记形状(每个类别A和B),errorbar颜色与相应标记颜色的颜色相匹配 (即
palete=dict(A=“k”,B=“r”)

以下是我的数据:

Type         Y              Err
A             3           0.2
A             3.1         0.8
A             4.3         0.6
B             5.9         1.1
B             5.1         0.5
我彻底搜索了这个论坛,以获取错误条,以下是我迄今为止得到的信息

Subplot1 = sns.stripplot(y=DataFrame["Y"], x=DataFrame["Type"], marker='s',
                         palette=dict(A= "k", B="r")`

# Add errorbars to each data point 
for PointPair in Subplot1.collections:
     for x, y in PointPair.get_offsets():
         x_coords.append(x)
         y_coords.append(y)

Subplot1.errorbar(x_coords, y_coords, yerr=DataFrame['Err'], 
                     fmt=' ', 
                     elinewidth=1, ecolor='k', 
                     capsize=3, markeredgewidth=0.81, 
                      )
因此,用简单的英语,我一直在尝试调整
ecolor='k'
以及
marker='s'
,以获得A类和B类的单个errorbar颜色和标记形状。但以下内容似乎不起作用:
ecolor=['k','r']
marker=['s','o']

请你解释一下。
非常感谢

不幸的是,
seaborn
如果您试图离开提供的绘图,则很难使用

在您的情况下,我认为完全放弃
seaborn
并使用标准
matplotlib
函数生成绘图要容易得多:

markers = ['s','o']
colors = ['k', 'r']
grouped = df.groupby('Type')

fig, ax = plt.subplots()
for i,((g,d),m,c) in enumerate(zip(grouped,markers,colors)):
    # generate scattered x values, adjust scale= as needed
    x = np.random.normal(loc=i,scale=0.05,size=(len(d['Y'],))) 
    ax.errorbar(x,d['Y'],yerr=d['Err'],
                fmt=m, color=c, capsize=3)
ax.set_xticks(list(range(len(grouped))))
ax.set_xticklabels([a for a in grouped.groups])

非常感谢您的回复。最后一件事。有没有办法缩小两组之间的空隙?我通过调整ax.set_xticks(list(range(len(grouped)))来实现这一点,即list(range(len(grouped))=[0,1]到[0,0.5],但这似乎只会影响刻度。你能帮我做这件事吗。非常感谢。只需调整xlim:
ax。设置xlim(-0.5,1.5)
会有帮助吗?非常感谢。看起来更好,但有没有办法在X方向收缩一点。由于数据点很少,因此存在巨大的空白空间。