前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用Matplotlib模块的text()函数给柱形图添加美丽的标签数据?

如何使用Matplotlib模块的text()函数给柱形图添加美丽的标签数据?

原创
作者头像
虫无涯
修改2024-02-20 15:13:25
17000
代码可运行
修改2024-02-20 15:13:25
举报
文章被收录于专栏:全栈测试技术全栈测试技术
运行总次数:0
代码可运行

1 简单引入

  • 在进行数据分析时,当一些图表数据,比如柱形图我们想让它更直观的显示一些内容,有时候会给柱形图添加标签, 那如何实现这样的效果呢?
  • 还有比如我们把某手机品牌1-12月每月的销量制作成柱形图,那如何在柱形图上显示具体的每月销量的标签?
  • 带着这个问题,我们来研究下这个功能吧;
  • 本文使用的是Python的Matplotlib模块的text()函数,它能给图表的指定位置添加标签、注释或标注。

2 关于text()函数

2.1 Matplotlib安装

  • text()函数是Python的Matplotlib模块一个函数;
  • 具体引入的话,需要先安装Matplotlib模块:

pip install matplotlib

2.2 text()引入

  • 需要插入pylot模块:

import matplotlib.pyplot as plt

  • 使用方法是:

plt.text()

2.3 text()源码

  • 路径如下:

Python37\Lib\site-packages\matplotlib\pyplot.py

  • 源码如下:

Autogenerated by boilerplate.py. Do not edit as changes will be lost.@_copy_docstring_and_deprecators(Axes.text) def text(x, y, s, fontdict=None, **kwargs): return gca().text(x, y, s, fontdict=fontdict, **kwargs)

2.4 text()参数说明

  • 详细参数说明如下:

参数

说明

x, y:float

放置文本的位置

s: str

文本

Fontdict:默认无

覆盖默认文本属性的字典

**kwargs

文本属性

2.5 text()两个简单示例

  • 示例1:在一个没有任何数据的图表上显示一个标签:
代码语言:python
代码运行次数:0
复制
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/11/17 
# 文件名称:test_plt_text().py
# 作用:Matplotlib模块的text()函数的应用


import matplotlib.pyplot as plt

plt.figure(figsize=(5, 5))
plt.text(0.5, 0.5, "这是一个标签")
# plt.show()
plt.savefig('plot.jpg')
  • 结果显示如下,发现中文是乱码的:
    在这里插入图片描述
    在这里插入图片描述
  • 要解决中文乱码,我们加一行代码:

plt.rcParams'font.sans-serif' = 'SimHei'

  • 之后显示如下:
    在这里插入图片描述
    在这里插入图片描述
  • 示例2:我们添加几个点数据,并设置文本数据:
代码语言:python
代码运行次数:0
复制
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/11/17 
# 文件名称:test_plt_text().py
# 作用:Matplotlib模块的text()函数的应用


import matplotlib.pyplot as plt

plt.figure(figsize=(5, 5))
x = [1, 2, 6]
x_pos = 1
y_pos = 1.5

plt.text(x_pos, y_pos, "这是一个标签")
plt.plot(x)
plt.rcParams['font.sans-serif'] = ['SimHei']
# plt.show()
plt.savefig('plot.jpg')
  • 结果显示如下:
    在这里插入图片描述
    在这里插入图片描述

3 柱形图绘制并添加标签

3.1 目标数据

  • 我们先创建一个产品0-12月份的每月销量数据表plt_text.xlsx

月份 销量 1月 1200 2月 2400 3月 112 4月 125 5月 555 6月 135 7月 136 8月 269 9月 627 10月 876 11月 350 12月 233

3.2 读取excel数据

class TestPltText(): def init(self): super(TestPltText, self).init()读取excel数据 self.data = "./plt_text.xlsx" self.data_excel = pd.DataFrame(pd.read_excel(self.data))获取相关内容 self.data_content = self.data_excel"月份", "销量" self.data_content01 = self.data_content.sort_values("销量", ascending=True)

3.3 设置窗口大小和xy轴坐标

def test_plt_text(self):设置窗口大小 plt.figure(figsize=(5, 4))构造x,y轴坐标 y = np.array(list(self.data_content01"销量")) x_ticks = list(self.data_content01"月份") x = range(len(x_ticks))

3.4 绘制柱形图

plt.bar(x, y, width=0.5, align="center", color="b", alpha=0.6) plt.xticks(range(len(x_ticks)), x_ticks, fontsize=6, rotation=90)

3.5 设置标签

x、y轴标签plt.xlabel('月份')plt.ylabel('销量') plt.title('月销量(万)')设置标签for label1, label2 in zip(x, y): plt.text(label1, label2+10, '%.0f' % label2, ha='center', va='bottom', fontsize=9)

3.6 解决乱码和结果显示

设置y轴的范围plt.ylim(0, 2600)plt.rcParams'font.sans-serif' = 'SimHei'plt.show()plt.savefig('plot.jpg')

4 结果显示

4.1 从小到大排序

  • 设置如下:

self.data_content01 = self.data_content.sort_values("销量", ascending=True)

  • 结果显示:
    在这里插入图片描述
    在这里插入图片描述

4.2 从大到小排序

  • 设置如下:

self.data_content01 = self.data_content.sort_values("销量", ascending=True) plt.bar(x, y, width=0.5, align="center", color="c", alpha=0.6)

  • 结果显示:
    在这里插入图片描述
    在这里插入图片描述

4.3 原序列输出显示

  • 不进行排序,直接进行输出原图:

构造x,y轴坐标y = np.array(list(self.data_content"销量")) x_ticks = list(self.data_content"月份") x = range(len(x_ticks)) plt.bar(x, y, width=0.5, align="center", color="k", alpha=0.6)

  • 结果显示:
    在这里插入图片描述
    在这里插入图片描述

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 简单引入
  • 2 关于text()函数
    • 2.1 Matplotlib安装
      • 2.2 text()引入
        • 2.3 text()源码
          • 2.4 text()参数说明
            • 2.5 text()两个简单示例
            • 3 柱形图绘制并添加标签
              • 3.1 目标数据
                • 3.2 读取excel数据
                  • 3.3 设置窗口大小和xy轴坐标
                    • 3.4 绘制柱形图
                      • 3.5 设置标签
                        • 3.6 解决乱码和结果显示
                        • 4 结果显示
                          • 4.1 从小到大排序
                            • 4.2 从大到小排序
                              • 4.3 原序列输出显示
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档