gpt4 book ai didi

python - 如何正确地将 matplotlib.errorbar 叠加到 seaborn.barplot 上?

转载 作者:行者123 更新时间:2023-11-28 18:01:05 40 4
gpt4 key购买 nike

我正在尝试将一些实验数据叠加到 seaborn.barplot 中的一些模拟数据上。问题是我不知道如何提取 x 轴上的条形位置。这是一个最小的例子:

    simulated_data = pandas.DataFrame({
'condition': ['A']*4 + ['B']*4,
'Protein': ['w', 'x', 'y', 'z']*2,
'data': numpy.random.uniform(10, 11, 8)
})

experimental_data = pandas.DataFrame({
'condition': ['A']*4 + ['B']*4,
'Protein': ['w', 'x', 'y', 'z']*2,
'data': numpy.random.uniform(10, 11, 8)
})
errors = pandas.DataFrame({
'condition': ['A']*4 + ['B']*4,
'Protein': ['w', 'x', 'y', 'z']*2,
'data': numpy.random.uniform(0, 1, 8)
})

plt.figure()
seaborn.barplot(data=simulated_data, y='data', x='Protein', hue='condition')

plt.errorbar(range(simulated_data.shape[0]), experimental_data['data'], yerr=errors['data'],
marker='_', mec='blue', zorder=1, elinewidth=1, capsize=2, ecolor='blue',
linestyle="None", markersize=10
)
plt.show()

然后给出

enter image description here

如何修改此代码以使错误与条形一致?

最佳答案

您可以在矩形补丁上使用 get_xy() 获取条形补丁的 x 和 y 位置,这将返回 (x, y) 坐标的元组。为了获得条形中心的坐标,您需要添加条形宽度的一半。

请注意,如果您希望它们出现在条形图的顶部,您可能必须增加 plt.errorbar 中的 zorder

import seaborn as sns

plt.figure()
abar = sns.barplot(data=simulated_data, y='data', x='Protein', hue='condition')

x_list = []
for patch in abar.patches:
x_list.append(patch.get_xy()[0]+(patch._width/2))

plt.errorbar(x_list, experimental_data['data'], yerr=errors['data'],
marker='_', mec='blue', zorder=10, elinewidth=1, capsize=2, ecolor='blue',
linestyle="None", markersize=10)

enter image description here

关于python - 如何正确地将 matplotlib.errorbar 叠加到 seaborn.barplot 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55686692/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com