为了账号安全,请及时绑定邮箱和手机立即绑定

如何水平居中条形图注释

如何水平居中条形图注释

冉冉说 2023-04-18 16:39:35
我正在创建这样的条形图:gender = ['M', 'F']numbers = [males,females]bars = plt.bar(gender, numbers, width=0.1, bottom=None, align='center', data=None)for i in range(len(numbers)):    plt.annotate(str(numbers[i]), xy=(gender[i],numbers[i]))plt.show()我想用来plt.annotate在栏的顶部写下确切的值。但是,该值打印在右侧。是否可以将其移动到中心?
查看完整描述

1 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

  • matplotlib 3.4.2,使用matplotlib.pyplot.bar_label

绘制列表和注释

gender = ['M', 'F']

numbers = [1644, 1771]


plt.figure(figsize=(12, 6))

p = plt.bar(gender, numbers, width=0.1, bottom=None, align='center', data=None)


plt.bar_label(p)

plt.show()

用熊猫绘图并注释

将列表转换为数据框并绘制pandas.DataFrame.plot

df = pd.DataFrame({'value': numbers, 'gender': gender})


ax = df.plot(x='gender', kind='bar', figsize=(12, 6), rot=0, legend=False, align='center', width=0.1)


ax.bar_label(ax.containers[0])

plt.show()

原始答案

  • 为了指定注释的水平对齐方式,使用ha参数

    • matplotlib:文本属性和布局

    • matplotlib:注释

    • matplotlib.pyplot.annotate

  • 根据JohanC的建议

    • 一个技巧是使用f'{value}\n'as 字符串和未修改的value(或numbers)作为 y 位置,连同va='center'.

    • 这也适用于plt.text. 或者,plt.annotation接受以“点”或“像素”为单位的偏移量。

选项1

  • 来自lists价值观和类别

import matplotlib.pyplot as plt


gender = ['M', 'F']

numbers = [1644, 1771]


plt.figure(figsize=(12, 6))

bars = plt.bar(gender, numbers, width=0.1, bottom=None, align='center', data=None)

for i in range(len(numbers)):

    plt.annotate(f'{numbers[i]}\n', xy=(gender[i], numbers[i]), ha='center', va='center')

选项 2

  • 来自pandas.DataFrame

  • 用于pandas.DataFrame.iterrows提取注释所需的位置 xy

    • x是分类'gender'

    • y是数字'value'

import pandas as pd

import matplotlib.pyplot as plt


df = pd.DataFrame({'value': [1771, 1644], 'gender': ['F', 'M']})


plt.figure(figsize=(12, 6))

bars = plt.bar(df.gender, df.value, width=0.1, bottom=None, align='center', data=None)

for idx, (value, gender) in df.iterrows():

    plt.annotate(f'{value}\n', xy=(gender, value), ha='center', va='center')

绘图输出

//img1.sycdn.imooc.com/643e5790000188fa06580327.jpg

查看完整回答
反对 回复 2023-04-18
  • 1 回答
  • 0 关注
  • 75 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信