【问题标题】:Customizing a barplot in matplotlib在 matplotlib 中自定义条形图
【发布时间】:2020-10-28 15:01:44
【问题描述】:

我想根据数据的频率自定义我的简单条形图。上下文如下:

我有一个数据集,其中 x 轴称为 var_change,y 轴称为 var_median,误差条称为 var_error。 var_change 和 var_error 以 5-var_median 的 bin 大小计算。这些变量的代码和绘图如下所示:

fig = plt.figure(figsize=(24,7))
ax = [plt.subplot(181)]
ax[i].barh(np.arange(0+2.5,99+2.5,5), var_change, alpha = 0.6, height = 5, 
           color='none', edgecolor='k', capsize=2.5, lw = 0.8)
ax[i].errorbar(var_change, np.arange(0+2.5,99+2.5,5), xerr = var_error, capsize=3, 
               fmt="r:o", ecolor = "black", alpha = 0.8)

我想根据数据集。频率可以使用以下代码计算:

#df_delta_pos is a data-frame
pos_count = []
for j in np.arange(0,99,5): 
    pos_count.append(df_delta_pos.where((df.var_median> TC_bins[j]) & 
                    (df.var_median<= TC_bins[j+5])).dropna()['var_change'].count())
#Here I would also normalize them if changing 'lw'. Code for normalization can be provided, if needed. 
#For now consider random numbers here.

最终图应如下所示,但 lwalpha 也会根据频率发生变化。

【问题讨论】:

    标签: python matplotlib bar-chart customization


    【解决方案1】:

    由于您没有向绘图提供数据,因此我无法重现这些数字。 无论如何,我都会尝试回答您的问题。

    1. barh 中的控件:查看barhdocumentation,您可以将其传递给colorlw,这也是一个列表/数组,其长度必须与数据相同。李>
    2. errorbar 中的控件:errorbar 不允许为alpha 指定列表。因此,您的替代方法是遍历 var_change 中的每个元素并单独绘制每个元素,然后您可以为每个点指定 alpha

    【讨论】:

      猜你喜欢
      • 2015-06-20
      • 2017-01-15
      • 2021-11-08
      • 2020-04-10
      • 1970-01-01
      • 2012-08-09
      • 2019-10-30
      • 2016-11-15
      • 1970-01-01
      相关资源
      最近更新 更多