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

如何在matplotlib中的水平条形图顶部添加标签?

骆磊
2023-03-14

任何人都可以帮我把城市名称添加到每个水平条的顶部吗?我已经做了其他一切。只需要弄清楚这一点。

import pandas as pd
import matplotlib.pyplot as plt
df1 = pd.read_csv("city_populations.csv")

#selecting particular columns
df = df1[['name','group','year','value']]
year = df1['year']
df = df.sort_values(by=['value'],ascending=False)

#selceting rows with year 2020
curr_year = 2020
#create a variable with true if year == curr_year
curr_population = df['year'] == curr_year
curr_population = df[curr_population]
print(curr_population)

#drawing the graph
fig,ax = plt.subplots(figsize = (10,8))
#to flip barh
values = curr_population[::-1]['group']
labels = []
clrs = []
for x in values:
    if x == "India":
        clrs.append("#adb0ff")
    elif x == "Europe":
        clrs.append("#ffb3ff")
    elif x == "Asia":
        clrs.append('#90d595')
    elif x == "Latin America":
        clrs.append("#e48381")
    elif x == "Middle East":
        clrs.append("#aafbff")
    elif x == "North America":
        clrs.append("#f7bb5f")
    else:
        clrs.append("#eafb50")
bar_plot = ax.barh(curr_population[::-1]['name'],curr_population[::-1]['value'],color = clrs)
plt.show()

这是我为了得到条形图而写的代码。我需要指导每个条顶部的标签。

共有1个答案

杜俊晤
2023-03-14

您必须将标签选项添加到< code>barh方法中

< code >在此输入代码 bar _ plot = ax . barh(curr _ population[::-1][' name '],curr_population[::-1]['value'],color = clrs,label="test ")

如果你想更自由地定位标签,你可以使用这样的东西(取自 https://matplotlib.org/3.2.1/gallery/lines_bars_and_markers/barchart.html#sphx-glr-gallery-lines-bars-and-markers-barchart-py):

def autolabel(rects):
    """Attach a text label above each bar in *rects*, displaying its height."""
    for rect in rects:
        height = rect.get_height()
        ax.annotate('{}'.format(height),
                    xy=(rect.get_x() + rect.get_width() / 2, height),
                    xytext=(0, 3),  # 3 points vertical offset
                    textcoords="offset points",
                    ha='center', va='bottom')

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

  • 最近在glassdoor-like网站上遇到了一个面试问题,我找不到一个优化的解决方案来解决这个问题: 这和积水问题完全不同。请通读这些例子。 给定一个输入数组,每个元素表示塔的高度,将浇水量,索引号表示浇水位置。每个塔的宽度为1。浇水后打印图表。 备注: > 浇注位置永远不会处于峰值位置。无需考虑分水的情况。 (如果您给出了这种情况的解决方案,您可以假设如果在峰值位置倒入N水,N/2水向左,N/

  • 我需要注释水平条形图。我能够使用matplotlib网站上显示的示例来注释垂直条形图,但是对于 horizonatl 的类似想法似乎不起作用。 以下是垂直方向的小型工作示例: 以下是我想要使用的代码,但不适用于水平图形 感谢任何帮助,提前感谢!

  • 问题内容: 我陷入一种感觉应该相对容易的事情上。我在下面提供的代码是基于我正在从事的一个较大项目的示例。我没有理由发布所有详细信息,因此请原样接受我带来的数据结构。 基本上,我正在创建一个条形图,我可以弄清楚如何在条形图上(在条形图的中心或上方)添加值标签。一直在网上查看示例,但在我自己的代码上实现未成功。我相信解决方案是使用“文本”或“注释”,但是我:a)不知道要使用哪个(通常来说,还没有弄清楚

  • 我想制作我的数据框的性别列的条形图(有许多行),我想在条形图顶部显示0和1的计数。我的数据框是这样的。 此外,我想将0更改为女性,1更改为男性,如下图所示。我在这个网站上看到了类似的问题,但我无法理解其中的逻辑。有人能帮我吗? 我用来制作此图的代码:

  • 我有以下数据框。 具有这些值 我正在尝试使用以下方法使用国家/地区及其频率进行绘制: 我需要的是在每个小节上面显示国家频率,并在小节之间保持一个非常小的空间。