我有一个数据框,我在其中预先计算了一组特定值的平均值和标准差。数据框的片段及其创建方法如下所示:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
channel = ["Red", "Green", "Blue", "Red", "Green", "Blue", "Red", "Green", "Blue"]
average= [83.438681, 36.512924, 17.826646, 83.763724, 36.689707, 17.892932, 84.747069, 37.072383, 18.070416]
sd = [7.451285, 3.673155, 1.933273, 7.915111, 3.802536, 2.060639, 7.415741, 3.659094, 2.020355]
conc = ["0.00", "0.00", "0.00", "0.25", "0.25", "0.25", "0.50", "0.50", "0.50"]
df = pd.DataFrame({"channel": channel,
"average": average,
"sd" : sd,
"conc": conc})
order = ["0.00", "0.25", "0.50"]
sns.barplot(x="conc", y="average", hue="channel", data=df, ci=None, order=order);
运行上面的代码会生成如下所示的图像:
我有一列 sd
,它具有预先计算的标准偏差,我想在每个绘制的条形图的上方和下方添加误差条。但是我不知道该怎么做。
我们将不胜感激。
最佳答案
昨天遇到这个错误。在 seaborn 中,我相信你不能根据预先确定的错误添加错误栏。最简单的解决方案是在 seaborn 上绘制 matplotlib 条形图。
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
channel = ["Red", "Green", "Blue", "Red", "Green", "Blue", "Red", "Green", "Blue"]
average= [83.438681, 36.512924, 17.826646, 83.763724, 36.689707, 17.892932, 84.747069, 37.072383, 18.070416]
sd = [7.451285, 3.673155, 1.933273, 7.915111, 3.802536, 2.060639, 7.415741, 3.659094, 2.020355]
conc = ["0.00", "0.00", "0.00", "0.25", "0.25", "0.25", "0.50", "0.50", "0.50"]
df = pd.DataFrame({"channel": channel,
"average": average,
"sd" : sd,
"conc": conc})
order = ["0.00", "0.25", "0.50"]
sns.barplot(x="conc", y="average", hue="channel", data=df, ci=None,
order=order)
conc2=[0,0,0,1,1,1,2,2,2]
width = .25
add = [-1*width, 0 , width, -1*width, 0 , width, -1*width, 0 , width,]
x = np.array(conc2)+np.array(add)
plt.errorbar(x = x, y = df['average'],
yerr=df['sd'], fmt='none', c= 'black', capsize = 2)
plt.show()
有点笨但是有用!
关于python - 在 Seaborn 和 Barplot 中使用预先计算的误差线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62820959/