当前位置: 首页 > 知识库问答 >
问题:

如何将堆积条形图中每个条形图的值相加[重复]

解宏扬
2023-03-14

我有以下数据:

similarity_score_summary={'sim_model':['jaccard_sim','Cos_tfidf_sim','spacy_sim','sent_trf_sim','wv_gensim_sim'],
                          'acc(thres=0.5)':[0.65,0.66,0.38,0.62,0.39],
                          'acc(thres=0.75)':[0.61,0.62,0.41,0.79,0.44],
                          'acc(thres=0.90)':[0.62,0.62,0.60,0.76,0.55]
                }

df_sim = pd.DataFrame.from_dict(similarity_score_summary)
# setting first name as index column 
df_sim.set_index("sim_model", inplace = True) 

fig=plt.figure(figsize=(10, 8))
axes=fig.add_subplot(1, 1, 1)
bar_width = 0.3
idx = np.array(range(df_sim.shape[0]))
labels = df_sim.index
plt.bar(data=df_sim, height='acc(thres=0.5)', x=idx, color='b', width=bar_width, label='acc(thres=0.5)')
plt.bar(data=df_sim, height='acc(thres=0.75)', x=idx+bar_width, color='g', width=bar_width, label='acc(thres=0.75)')
plt.bar(data=df_sim, height='acc(thres=0.90)', x=idx+bar_width+bar_width, color='magenta', width=bar_width, label='acc(thres=0.90)')
plt.xticks(idx, labels, rotation=90)
plt.xlabel('Similarity methods')
plt.ylabel('Similarity Score')
plt.ylim((0, 1))
plt.title('Accuracy score for different Similarity methods on Quora Question pairs Kaggle data')
plt.legend(['thres=0.5', 'thres=0.75', 'thres=0.9'], loc='upper right', ncol = 3)
plt.show()

这导致了下图:

我需要在每个栏的顶部添加值。需要帮助吗?

共有1个答案

齐博厚
2023-03-14

定义条形,迭代它们并获得每个条形的高度,获得< code>x值,并使用< code>plt.text在每个条形上方添加值。

示例:

bar1 = plt.bar(
    data=df_sim,
    height="acc(thres=0.5)",
    x=idx,
    color="b",
    width=bar_width,
    label="acc(thres=0.5)",
)
bar2 = plt.bar(
    data=df_sim,
    height="acc(thres=0.75)",
    x=idx + bar_width,
    color="g",
    width=bar_width,
    label="acc(thres=0.75)",
)
bar3 = plt.bar(
    data=df_sim,
    height="acc(thres=0.90)",
    x=idx + bar_width + bar_width,
    color="magenta",
    width=bar_width,
    label="acc(thres=0.90)",
)
for bars in [bar1, bar2, bar3]:
    for bar in bars:
        yval = bar.get_height()
        plt.text(bar.get_x() + bar.get_width() / 2.0, yval + 0.005, yval, ha="center")

结果:

 类似资料:
  • 问题内容: 需要查看条形图中的条形所代表的确切值,而不是Y轴上的近似值。 怎么可能呢? 谢谢阅读! 问题答案: 在iReport 3.7.6中,您可以仅选中BarPlot属性下的“显示标签”框。 在以前的版本(3.1.4)中,我必须创建一个ChartCustomizer类。 如果您需要格式化标签中的数字(例如,设置为百分比,添加千位分隔符等),那么即使在新版本中,您也绝对需要一个ChartCust

  • 我有以下数据集,并使用Matplotlib绘制了一个堆叠条形图。 以下是生成图形的代码: 我需要注释图形中的值。例如,我需要每个条的值出现在图形的条内。请参阅下面的示例

  • StackedBarChart是BarChart的变体,它绘制了指示类别数据值的条形图。 条形可以是垂直的或水平的,这取决于哪个轴是类别轴。 每个系列的栏位于上一系列的顶部。 以下是堆积条形图,描绘了人口增长。 在JavaFX中,堆积条形图由名为StackedBarChart的类StackedBarChart 。 该类属于包javafx.scene.chart 。 通过实例化此类,您可以在Java

  • 问题内容: 我正在尝试使用创建水平堆叠的条形图,但是我看不到如何使条形实际堆叠,而不是全部从y轴开始。 这是我的测试代码。 看到tcaswell的评论后,编辑使用kwarg。 这似乎是正确的方法,但是如果没有特定条形的数据,则尝试失败,因为它正尝试添加到随后返回的值。 问题答案: 由于您使用的是熊猫,因此值得一提的是,您可以在本地进行堆积条形图: 请参阅 文档的可视化部分。

  • 问题内容: 我试图在一个堆积条形图中“稳健地”居中数据标签。A下面给出了简单的代码和结果。如您所见,数据标签并不是所有的矩形都居中。我错过了什么? 问题答案: 你为什么写“va=”bottom“。