这是我参与8月更文挑战的第2天,活动详情查看:8月更文挑战
大家好,我是才哥。
在用matplotlib
绘制柱状图的时候,往往需要将数据显示在柱状图上,今天我们就简单介绍一下。
plt.text方法
在matplotlib 3.4.0
之前的版本中,一般用plt.text
方法来进行数据标签的绘制。plt.text
如名字所示就是可以在图像任何位置绘制指定文字,基于此,我们只需要在对应数据点的坐标点位置绘制对应的值即可实现数据标签显示。
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
可以很好的实现柱状图(含条形图)数据标签显示需求。
plt.bar_label(
container,
labels=None,
*,
fmt='%g',
label_type='edge',
padding=0,
**kwargs,
)
container
:bar
或barh
函数返回值
labels
: 标签文本列表,默认为None,即为使用fmt参数格式化的柱子的数据(柱子的高度
fmt
:标签的格式字符串,默认值为’%g’,即将标签值格式化为浮点数
label_type
:标签类型,可选:’edge’, ‘center’。默认值为’edge’ 对于普通柱状图,该参数仅用于控制标签的位置;对于堆积柱状图,不同标签类型对应不同的标签值 ‘edge’: 标签位于柱子的端点 ‘center’:标签位于柱子的中部
padding
: 标签与柱子之间的距离,单位为像素,默认值为0
在原代码中,替换显示数据标签部分代码即可
# 显示数据标签
plt.bar_label(bar, label_type='edge')
官网参考:
以上就是本次的简单内容,大家可自行修改参数感受!
最后,祝福我们本届奥运会更多金!
今天的文章一行代码简单搞定matplotlib柱状图显示数据标签分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/15021.html