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

news2024/12/26 2:39:03

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

  • 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 完整源码
  • 5 结果显示
    • 5.1 从小到大排序
    • 5.2 从大到小排序
    • 5.3 原序列输出显示

1 简单引入

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

2 关于text()函数

2.1 Matplotlib安装

  • text()函数是PythonMatplotlib模块一个函数;
  • 具体引入的话,需要先安装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:在一个没有任何数据的图表上显示一个标签:
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/11/17 
# 文件名称:test_plt_text().py
# 作用:Matplotlib模块的text()函数的应用
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

import matplotlib.pyplot as plt

plt.figure(figsize=(5, 5))
plt.text(0.5, 0.5, "这是一个标签")
plt.show()
  • 结果显示如下,发现中文是乱码的:
    在这里插入图片描述
  • 要解决中文乱码,我们加一行代码:
plt.rcParams['font.sans-serif'] = ['SimHei']
  • 之后显示如下:
    在这里插入图片描述
  • 示例2:我们添加几个点数据,并设置文本数据:
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/11/17 
# 文件名称:test_plt_text().py
# 作用:Matplotlib模块的text()函数的应用
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

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()
  • 结果显示如下:
    在这里插入图片描述

3 柱形图绘制并添加标签

3.1 目标数据

  • 我们先创建一个产品0-12月份的每月销量数据表plt_text.xlsx
月份	    销量
11200
22400
3112
4125
5555
6135
7136
8269
9627
10876
11350
12233

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()

4 完整源码

# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/11/17 
# 文件名称:test_plt_text().py
# 作用:Matplotlib模块的text()函数的应用
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import random


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)

    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))

        # 绘制柱形图
        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)

        # 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)
        # 设置y轴的范围
        plt.ylim(0, 2600)
        plt.rcParams['font.sans-serif'] = ['SimHei']
        plt.show()


if __name__ == "__main__":
    plt_text = TestPltText()
    plt_text.test_plt_text()

5 结果显示

5.1 从小到大排序

  • 设置如下:
self.data_content01 = self.data_content.sort_values("销量", ascending=True)
  • 结果显示:
    在这里插入图片描述

5.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)
  • 结果显示:
    在这里插入图片描述

5.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)
  • 结果显示:
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1220096.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

编译安装redis及配置多实例

yum安装是这种十分简单的方法我们就不在提及了,今天我们来做一下redis的编译安装 Redis源码包官方下载链接:http://download.redis.io/releases/ 一、编译安装: 安装依赖包 dnf -y install make gcc jemalloc-devel systemd-devel如果是…

配置环境-insightface-torch

1. 创建环境:conda create -n insightface2 python3.8 2.安装pytorch: 我的cuda 是 11.3 然后进入 pytorch 官网查找对应cuda 版本 pytorch 安装 建议使用 pip # CUDA 11.3 conda install pytorch1.12.1 torchvision0.13.1 torchaudio0.12.1 cudatoolkit11.3 -…

抖音订单列表查询api接口

怎么获取订单列表接口 请求地址:响应示例及参数

asp.net健身会所管理系统sqlserver

asp.net健身会所管理系统sqlserver说明文档 运行前附加数据库.mdf(或sql生成数据库) 主要技术: 基于asp.net架构和sql server数据库 功能模块: 首页 会员注册 教练预约 系统公告 健身课程 在线办卡 用户中心[修改个人信息 修…

数据结构--栈与队列

目录 前言 1.栈 1.1栈的概念及结构 1.2接口函数 1.3函数实现 1.4如何使用 2.队列 2.1队列的概念及结构 2.2接口函数 2.3函数实现 2.4如何使用 前言 前面我们已经学习了顺序表和链表,今天我们来学习栈与队列,这两种结构也属于线性表,实…

【数据结构初阶】单链表(附全部码源)

单链表 1,单链表的概念及结构2,单链表的实现2.1初始化内容(所需文件,接口)2.2申请结点2.3打印单链表2.4尾插2.5头插2.6尾删2.7头删2.8查找2.9在pos位置之后插入2.10在pos位置前面插入2.11删除pos之后的值2.12删除pos位…

2023亚太杯数学建模思路 - 案例:ID3-决策树分类算法

文章目录 0 赛题思路1 算法介绍2 FP树表示法3 构建FP树4 实现代码 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法,就是频繁模…

接口测试系列之 —— 接口安全测试

“开源 Web 应用安全项目”(OWASP)在 2019 年发布了 API 十大安全风险 《OWASP API 安全 Top10》:失效的对象级别授权、失效的用户身份验证、过 度的数据暴露、资源缺乏和速率限制、失效的功能级授权、批量分配、安全配置 错误、注入、资产管理不当、日志和监视不足…

百家网约车平台发布“阳光五条” 多举措加强司机保障

11月17日,免佣联盟百家网约车平台发布“阳光五条”,通过加大免佣力度、实行车费保镖司机版、72小时保护期等措施,加强对网约车司机的权益保障。 近年,交通运输部推动交通运输新业态平台企业落实“阳光行动”等工作,加…

图像分类系列(三) GoogLeNet InceptionV1学习详细记录

前言 ​ 在上一期中介绍了VGG,VGG在2014年ImageNet 中获得了定位任务第1名和分类任务第2名的好成绩,而今天要介绍的就是同年分类任务的第一名——GoogLeNet 。 ​ 作为2014年ImageNet比赛冠军,GoogLeNet 比VGG更深的网络,比Alex…

11月17日,国家大基金三期隆重开启,共同见证芯片产业新时代!

11月17日,国家大基金三期隆重开启,共同见证芯片产业新时代! 自国家大基金二期于2019年10月注册成立以来,一直积极响应国家战略和新兴行业发展规划,对设计创新行业的投资加大规模,比如智能汽车、智能电网、人…

初识Linux:目录的创建销毁

目录 ​编辑 提示:以下指令均在Xshell 7 中进行 零、桌面的本质 💻 扩展🎇: 一、cd指令: 1、cd - : 2、cd ~: 重命名命令:alias 二、stat指令 冷知识: 如果…

如何在工作外发展副业?主业和副业该如何权衡

有一句话说得好,不要把所有的鸡蛋放在一个篮子里。在面对繁忙的工作生活之外,想要拥有额外的收入来源那就是做一份不影响主业的副业。而副业的发展,不仅能够增加收入,更可以拓展个人的技能和兴趣。 主业跟副业该如何权衡呢&#x…

时间序列预测(6) — ARIMA实现单输入单输出负荷预测

目录 1 数据准备与可视化 2 简单数据探索与清洗 3 差分处理 4 绘制ACF与PACF图像,完成模型选择 5 建立ARIMA和SARIMA模型 5.1 初步建模 5.2 精细化建模 5.3 最终的模型 ARIMA作为成熟的统计学模型已被各种软件以各种方式实现,在Python中我们最常使…

服装鞋帽箱包展示预约小程序的效果是什么

市场上售卖服装、鞋帽箱包的品牌店或小店摊贩非常多,同时这些产品又是人们生活的必需品,以前购买服装等纺织产品,消费者习惯前往线下商场或品牌店,但如今更多的消费者习惯于线上购买,传统门店经营面临困境。 通过【雨科…

暖阳脚本_ 定制企业软件开发的4个趋势:AI、RPA、云应用、边缘计算

根据 Statista 的统计数据显示,企业级软件市场在全球范围内占据了领先地位,预测到2028年,市场规模将接近3760亿美元。企业应用软件市场的稳健增长,甚至在经济不景气的时候也能持续,这充分表明软件解决方案对于提升企业…

使用 Redis BitMap 实现签到与查询历史签到以及签到统计功能(SpringBoot环境)

目录 一、前言二、Redis BitMap 位图原理2.1、BitMap 能解决什么2.2、BitMap 存储空间计算2.3、BitMap 存在问题 三、Redis BitMap 操作基本语法和原生实现签到3.1、基本语法3.2、Redis BitMap 实现签到操作指令 四、SpringBoot 使用 Redis BitMap 实现签到与统计功能4.1、代码…

避雷指南:电视盒子哪个牌子最好?最具性价比电视盒子排行榜

电视盒子有些会出现死机和卡顿,广告植入过多,操作复杂等问题,大家在选购时极易踩雷,我身为数码测评员,本期测评的主题是电视盒子哪个牌子最好,购入了市面上最热销的电视盒子对比后整理了最具性价比电视盒子…

ubuntu提高 github下载速度

Github一般用于Git的远程仓库,由于服务器位于国外,国内访问速度比较慢,为了提高访问速度,决定绕过DNS域名解析。 获取Github的IP地址 按下ctrl+alt+T打开命令终端,输入: nslookup gi…