如何控制Python中错误条图之间的一致性?

如何控制Python中错误条图之间的一致性?,python,pandas,matplotlib,errorbar,Python,Pandas,Matplotlib,Errorbar,我有以下数据: import pandas as pd URL = "https://stepik.org/media/attachments/lesson/9250/atherosclerosis.csv" data = pd.read_csv(URL) atherosclerosis = data.groupby(["age", "dose"]).agg(['mean', 'std']) atherosclerosis.columns = ['_'.join(col) for col in

我有以下数据:

import pandas as pd
URL = "https://stepik.org/media/attachments/lesson/9250/atherosclerosis.csv"
data = pd.read_csv(URL)
atherosclerosis = data.groupby(["age", "dose"]).agg(['mean', 'std'])
atherosclerosis.columns = ['_'.join(col) for col in atherosclerosis.columns]
atherosclerosis
结果:

          expr_mean  expr_std
age dose                      
1   D1    104.758464  5.863454
    D2    105.545864  4.369024
2   D1    101.004805  5.116310
    D2    102.273629  5.135374
我画的误差条是这样的:

plot_data1 = atherosclerosis.xs('D1', level=1, drop_level=False)
plot_data2 = atherosclerosis.xs('D2', level=1, drop_level=False)
plot_index1 = [str(idx) for idx in plot_data1.index]
plot_index2 = [str(idx) for idx in plot_data2.index]
plt.errorbar(plot_index1, plot_data1["expr_mean"], 
             yerr=plot_data1["expr_std"]/2,
             marker="s", mfc='green', 
             markeredgewidth=2, capsize=4, capthick=2, 
             fmt='o-', ecolor="magenta")
plt.errorbar(plot_index2, plot_data2["expr_mean"], 
             yerr=plot_data2["expr_std"]/2,
             marker="s", mfc='green', 
             markeredgewidth=2, capsize=4, capthick=2, 
             fmt='o-', ecolor="magenta")
plt.show()
结果:

          expr_mean  expr_std
age dose                      
1   D1    104.758464  5.863454
    D2    105.545864  4.369024
2   D1    101.004805  5.116310
    D2    102.273629  5.135374
]

我能不能把(1,'D1')和(1,'D2')连接起来,把(2,'D1')和(2,'D2')连接起来。像这样:


]

您只需更改绘图数据即可:

plot_data1 = atherosclerosis.xs(1, level=0, drop_level=False)
plot_data2 = atherosclerosis.xs(2, level=0, drop_level=False)
输出:


更新:要获得您想要的内容,我会对数据进行排序,并根据范围进行绘图:

动脉粥样硬化=动脉粥样硬化。分类指数(等级=(1,0)) 动脉粥样硬化['range']=np.arange(len(动脉粥样硬化))

输出:


谢谢您的回答。你知道如何让它看起来更像示例中的吗?例如,将(1,'D1')和(2,'D1')放在一边,将(1,'D2'),(2,'D2')放在另一边。也许在其他图书馆(seasborn,plotly)也有可能。再次感谢。正是我需要的。