前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一行代码简单搞定matplotlib柱状图显示数据标签

一行代码简单搞定matplotlib柱状图显示数据标签

作者头像
可以叫我才哥
发布2021-08-05 15:30:33
15.2K0
发布2021-08-05 15:30:33
举报
文章被收录于专栏:可以叫我才哥

关注可以叫我才哥,学习分享数据之美

我们的第95篇原创

作者:才哥


大家好,我是才哥。

在用matplotlib绘制柱状图的时候,往往需要将数据显示在柱状图上,今天我们就简单介绍一下。

plt.text方法

matplotlib 3.4.0之前的版本中,一般用plt.text方法来进行数据标签的绘制。plt.text如名字所示就是可以在图像任何位置绘制指定文字,基于此,我们只需要在对应数据点的坐标点位置绘制对应的值即可实现数据标签显示。

代码语言:javascript
复制
import pandas as pd
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False

fig, ax = plt.subplots(figsize=(8,4), dpi=100)

y_data = [ 29, 21, 17, 14, ]
x_data = ('中国', '美国', '日本', '澳大利亚')

# 柱状图颜色
color = 'coral'

# 柱状图
bar = plt.bar(x_data, y_data, 0.5, color=colors[1],edgecolor='grey')

# 设置标题
ax.set_title('东京奥运会金牌数-截止8月2日',fontsize=14,y=1.05)
# 设置坐标轴标题
ax.set_ylabel("",fontsize = 12,color = 'black',alpha = 0.7,rotation=360)
# 设置Y轴区间
ax.set_ylim(0,30)

# 显示数据标签
for a,b in zip(x_data, y_data):
    plt.text(a,b,
             b,
             ha='center', 
             va='bottom',
            )

# 边框隐藏
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['bottom'].set_visible(False)
ax.spines['left'].set_visible(False)

对于plt.text(x, y, s, fontdict=None, **kwargs)

x,y:文本(标签)所在的位置

s:用于显示的文本

ha:水平对齐方式(可选:'center', 'right', 'left')

va:垂直对齐方式(可选:'center', 'top', 'bottom', 'baseline', 'center_baseline')

plt.bar_label方法

在最新的matplotlib版本(3.4.0及之后)中,我们发现有个函数方法plt.bar_label可以很好的实现柱状图(含条形图)数据标签显示需求。

代码语言:javascript
复制
plt.bar_label(
    container,
    labels=None,
    *,
    fmt='%g',
    label_type='edge',
    padding=0,
    **kwargs,
)

containerbarbarh函数返回值 labels :标签文本列表,默认为None,即为使用fmt参数格式化的柱子的数据 fmt:标签的格式字符串,默认值为'%g',即将标签值格式化为浮点数 label_type :标签类型,可选参数为'edge', 'center',默认值为'edge'。对于普通柱状图,该参数仅用于控制标签的位置;对于堆积柱状图,不同标签类型对应不同的标签值:'edge':标签位于柱子的端点, 'center':标签位于柱子的中部 padding :标签与柱子之间的距离,单位为像素,默认值为0

在原代码中,替换显示数据标签部分代码即可

代码语言:javascript
复制
# 显示数据标签
plt.bar_label(bar, label_type='edge')

官网参考: https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.bar_label.html

以上就是本次的简单内容,大家可自行修改参数感受!

最后,祝福我们本届奥运会更多金!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 可以叫我才哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • plt.text方法
  • plt.bar_label方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档