首页 > 解决方案 > 在 panda concat 图上绘制不同的误差线

问题描述

我制作了一个函数,试图在数据框中绘制一些值的平均值条。我遇到麻烦的地方是为每个条形图添加相应的错误。我似乎无法理解应该如何正确使用yerr参数。

def env_mean_concat(dataframe_name, title_name, max_score):
  x = dataframe_name[dataframe_name['What environment did you use during the experiment?'] == 'Environment 1'].mean().rename('Environment 1')
  y = dataframe_name[dataframe_name['What environment did you use during the experiment?'] == 'Environment 2'].mean().rename('Environment 2')

  plot = pd.concat([x, y], axis=1).plot(kind = "bar", yerr=1) #yerr=env_std_dev(dataframe_name).values.T) 

  plot.set_title("Mean of " + title_name)
  plot.set_xlabel("Questions")
  plot.set_ylabel("Score")
  plot.set_ylim(0, max_score)

我还做了一个返回数据标准差的函数

def env_std_dev(dataframe_name):
  std_1 = dataframe_name[dataframe_name['What environment did you use during the experiment?'] == 'Environment 1'].std()
  std_2 = dataframe_name[dataframe_name['What environment did you use during the experiment?'] == 'Environment 2'].std()
  return std_1, std_2

阴谋

在图片中,您可以看到情节,但出于演示目的使用 yerr=1。

我该怎么做才能让std_1成为蓝色条上的错误条,而std_2成为橙色条上的错误?

标签: pythonpandasdataframematplotliberrorbar

解决方案


当然,只是我无法理解yerr的结构!

更改了偏差代码

def env_std_dev(dataframe_name):
  std_1 = dataframe_name[dataframe_name['What environment did you use during the experiment?'] == 'Environment 1'].std()
  std_2 = dataframe_name[dataframe_name['What environment did you use during the experiment?'] == 'Environment 2'].std()

  std = [std_1.to_numpy(), std_2.to_numpy()]
  
  return std

现在设置时哪个

yerr=env_std_dev(dataframe_name)

env_mean_concat给了我们我想要的情节: 在此处输入图像描述

感谢那些为我指明正确方向的人。我肯定会在未来看看seaborn!


推荐阅读