【问题标题】:Plot different errorbars on panda concat plot在 panda concat 图上绘制不同的误差线
【发布时间】:2021-03-26 23:57:28
【问题描述】:

我创建了一个函数,试图在数据框中绘制一些值的平均值条。我遇到麻烦的地方是为每个条形图添加相应的错误。我似乎无法理解如何正确使用 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 成为橙色条上的错误?

【问题讨论】:

  • 您有数据样本吗? x轴代表什么?我觉得你可以更轻松地组织你的数据以获得你想要的东西(例如groupby('environment').agg('mean', 'std').plot())。你也可以看看 seaborn 图书馆
  • argument yerr 接受一个值、一个列表或一个数组,这就是您应该提供的。在您的情况下,这可能是两个值的列表,然后 matplotlib 假定第一个用于所有蓝色条,第二个用于其余的。或者两个列表的列表,每三个值,所以每个栏都有自己的错误栏。但正如 cripcate 所说 - 你的方法相当非传统。也许有更好的方法来实现所需的绘图,但您必须为此提供数据结构。

标签: python pandas dataframe matplotlib errorbar


【解决方案1】:

当然只是我无法理解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)

in env_mean_concat 给了我们我想要的情节:

感谢那些为我指明正确方向的人。以后肯定会去seaborn看看!

【讨论】:

    猜你喜欢
    • 2021-11-29
    • 2020-01-23
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多