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

如何使用Matplotlib[复制]添加条形标签

伯庆
2023-03-14

我有以下数据框。

                  _id                               message_date_time         country
0   {'$oid': '61f7dfd24b11720cdbda5c86'}    {'$date': '2021-12-24T12:30:09Z'}   RUS
1   {'$oid': '61f7eb7b4b11720cdbda9322'}    {'$date': '2021-12-20T21:58:20Z'}   RUS
2   {'$oid': '61f7fdad4b11720cdbdb0beb'}    {'$date': '2021-12-15T15:29:13Z'}   RUS
3   {'$oid': '61f8234f4b11720cdbdbec52'}    {'$date': '2021-12-10T00:03:43Z'}   USA
4   {'$oid': '61f82c274b11720cdbdc21c7'}    {'$date': '2021-12-09T15:10:35Z'}   USA

具有这些值

df["country"].value_counts()

RUS    156
USA    139
FRA     19
GBR     11
AUT      9
AUS      8
DEU      7
CAN      4
BLR      3
ROU      3
GRC      3
NOR      3
NLD      3
SWE      2
ESP      2
CHE      2
POL      1
HUN      1
DNK      1
ITA      1
ISL      1
BIH      1
Name: country, dtype: int64

我正在尝试使用以下方法使用国家/地区及其频率进行绘制:

plt.figure(figsize=(15, 8))
plt.xlabel("Frequency")
plt.ylabel("Country")
plt.hist(df["country"])
plt.show()

我需要的是在每个小节上面显示国家频率,并在小节之间保持一个非常小的空间。

共有2个答案

闻法
2023-03-14

为此,我使用了seaborn计数图,因为它更适合检查系列中每个对象的计数。

plt.figure(figsize = (20,5))
bars = plt.bar(df["country"], df["counts"])
for bar in bars.patches:
  plt.annotate(s = bar.get_height(), xy = (bar.get_x() + bar.get_width() / 2, bar.get_height()), va = "bottom", ha = "center")
plt.show()

输出应该是这样的,

如果您想在图上显示其他内容而不是高度,只需将< code>annotate函数中的< code>s参数更改为您选择的值。

督俊雅
2023-03-14

可以说是使用plt.bar()的最简单方法。例如:

counts = df["country"].value_counts()
names, values = counts.index.tolist(), counts.values.tolist()
plt.bar(names, values)
height_above_bar = 0.05  # distance of count from bar
fontsize = 12  # the fontsize that you want the count to have
for i, val in enumerate(values):
    plt.text(i, val + height_above_bar, str(val), fontsize=12)
plt.show()
 类似资料:
  • 问题内容: 我陷入一种感觉应该相对容易的事情上。我在下面提供的代码是基于我正在从事的一个较大项目的示例。我没有理由发布所有详细信息,因此请原样接受我带来的数据结构。 基本上,我正在创建一个条形图,我可以弄清楚如何在条形图上(在条形图的中心或上方)添加值标签。一直在网上查看示例,但在我自己的代码上实现未成功。我相信解决方案是使用“文本”或“注释”,但是我:a)不知道要使用哪个(通常来说,还没有弄清楚

  • 任何人都可以帮我把城市名称添加到每个水平条的顶部吗?我已经做了其他一切。只需要弄清楚这一点。 这是我为了得到条形图而写的代码。我需要指导每个条顶部的标签。

  • 我陷入了感觉应该相对容易的事情。我下面带来的代码是基于我正在进行的一个更大项目的示例。我认为没有理由发布所有细节,所以请按原样接受我带来的数据结构。 基本上,我正在创建一个条形图,我只是想知道如何在条形图上添加值标签(在条形图的中心,或者就在它的上面)。我一直在网上寻找示例,但是在我自己的代码上没有成功实现。我相信解决方法是用“文本”或“注释”,但我:a)不知道用哪一个(而且总的来说,还没想好什么

  • 问题内容: 有没有办法直接使用字典中的数据来绘制条形图? 我的字典看起来像这样: 我期待 工作,但事实并非如此。 这是错误: 问题答案: 您可以通过首先绘制条形图然后设置适当的刻度来分两行进行: 请注意,倒数第二行应在python3中读取,因为它会返回一个生成器,而matplotlib无法直接使用该生成器。

  • 我一直试图得到一个条形图,每个条形图上都有值标签。我找遍了,但还是找不到。我的df如下所示。 到目前为止,我的代码是

  • 我正在测试一个图表,除了图例之外的一切都有效。我已经运行了下面的代码,没有在plt.plot中找到的标签,但是我仍然没有得到一个图例返回。有人能看出原因吗?