数据可视化 —— 折线图应用(大全)

一、导入需要的库

# Matplotlib 是 Python 最常用的绘图库,pyplot 提供了类似 MATLAB 的绘图接口
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

二、常用的库函数

  • plt.plot(x轴,y轴):plot()是画折线图的函数。

  • plt.xlabel('日期'):x轴的显示标签。

  • plt.ylabel('气温(度)'):y轴的显示标签。

  • plt.xticks([原数据标签], [替换后的数据标签], rotation=300):用于x轴数据标签的显示,rotation是倾斜度。

  • plt.title('标题名', loc='left'):图上的名字显示,loc代表显示的位置在哪里。

  • plt.grid(which(网格类型)="major", axis(方向)='both', lw(线的宽度)=1):添加网格线。

  • plt.legend([图例名称, ..,]shadow(阴影) = True,fancybox(圆角矩形)=True): 显示图例。

  • plt.savefig('名字.格式'): 保存图表为图片

  • plt.show(): 显示图表

  • plt.ylabel('名称'):设置y轴标签文本

三、案例一:一周气温图(基础版)

import matplotlib.pyplot as plt
import numpy as npx = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
# 定义 x 轴数据:包含星期一到星期日的字符串列表
# 用于表示横坐标的日期标签high = [28, 28, 25, 18, 17, 20, 25]
# 最高气温数据列表(单位假设为摄氏度)
# 按周一到周日顺序排列low = [22, 21, 18, 12, 14, 16, 19]
# 最低气温数据列表
# 与 high 列表顺序一致plt.plot(x, high)
# 绘制最高气温折线图
# 第一个参数 x:横坐标数据
# 第二个参数 high:纵坐标数据
# 默认使用第一个颜色(蓝色)和线性连接plt.plot(x, low)
# 绘制最低气温折线图
# 使用第二个默认颜色(橙色)叠加到同一坐标系plt.show()
# 显示图形窗口
# 在脚本中必须调用的函数,用于渲染和显示所有已绘制的图形

四、案例二:分店折线图(中等)

准备好excel文件,拿第一分店的数据

# 导入matplotlib的pyplot模块,用于绘图
import matplotlib.pyplot as plt
# 导入pandas模块,用于数据处理和分析
import pandas as pd# 创建图形对象,设置图形参数
plt.figure(num='折线图', figsize=(6, 4), facecolor='w')  # num:图形名称, figsize:图形尺寸(宽6英寸,高4英寸), facecolor:画布背景色
# 设置全局字体为黑体(解决中文显示问题)
plt.rcParams['font.sans-serif'] = ['SimHei']# 使用pandas读取Excel数据文件
df = pd.read_excel('2022年某店铺3个分店销售额.xlsx')# 提取月份数据作为x轴
x = df['月份']
# 提取第一分店销售额数据作为y轴
y = df['第一分店']# 设置x轴标签文本
plt.xlabel('月份')
# 设置y轴标签文本
plt.ylabel('销售额(万元)')
# 设置图表标题(指定宋体、字体大小12、黑色)
plt.title('2022年某店铺第一分店销售额', fontsize=12, color='k', fontproperties='SimSun')
# 设置y轴显示范围(最小值20,最大值30)
plt.ylim(20, 30)# 添加水平参考线(显示全年平均值,使用虚线样式)
plt.axhline(y=sum(y)/12, linestyle=':')# 启用网格线显示
plt.grid()# 遍历每个数据点添加数值标签
for a, b in zip(x, y):# 在对应坐标位置显示数值,保留两位小数,水平居中对齐plt.text(a, b+0.2, '%.2f' % b, ha='center',va='bottom')# 绘制折线图(青色虚线,方形标记,线宽2)
plt.plot(x, y, 'c:s', linewidth=2)# 添加图例(包含平均销售额和分店数据说明,带阴影效果,圆角边框,定位在右下角)
plt.legend(('平均销售额','第一分店'), shadow=True, fancybox=True, loc=4)# 再次绘制折线图(使用默认参数,可能覆盖前次样式)
plt.plot(x, y)# 保存生成的图表为PNG图片文件
plt.savefig('2022年某店铺第一分店销售额.png')
# 在窗口中显示图表
plt.show()

 

五、案例三:正弦余弦图(中等)

# 导入必要的库
import numpy as np
import matplotlib.pyplot as plt# 设置中文字体(适用于Windows)
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号显示问题
plt.rcParams['axes.unicode_minus'] = False  # 创建一个名为'正'的新图形窗口
plt.figure(num='正')# 生成x轴数据:在-π到π之间生成256个等间距点(包含终点)
x = np.linspace(-np.pi, np.pi, 256, endpoint=True)# 计算正弦和余弦函数值
y1 = np.sin(x)
y2 = np.cos(x)# 设置坐标轴标签
plt.xlabel('x轴')  # X轴标签
plt.ylabel('y轴')  # Y轴标签# 设置x轴显示范围(扩展为原范围的1.5倍)
plt.xlim(x.min() * 1.5, x.max() * 1.5)# 自定义x轴刻度标签(使用LaTeX符号表示π)
plt.xticks([-4, -2, 0, 2, 4],  # 刻度位置(实际数值)[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$\pi/2$', r'$\pi$']  # 显示文本
)# 添加标题(居中显示)
plt.title('正弦余弦图', loc='center')# 绘制正弦曲线(红色虚线,线宽2)
plt.plot(x, y1, color='r', linestyle='--', linewidth=2)
# 绘制余弦曲线(黑色实线,线宽2)
plt.plot(x, y2, color='k', linestyle='-', linewidth=2)# 添加带箭头的注释(xy指向点坐标,xytext文本位置)
plt.annotate('最小值',xy=(-np.pi/2, -1.0),         # 箭头指向位置xytext=(-(np.pi/2), -0.5),   # 文本起始位置arrowprops=dict(arrowstyle='->')  # 箭头样式
)# 添加网格线(主网格,双向,线宽1)
plt.grid(which="major",  # 显示主网格axis='both',    # 同时显示x/y轴网格lw=1            # 网格线宽
)# 添加水平参考线(在y=0处,从xmin=0到xmax=0.5)
plt.axhline(y=0, xmin=0, xmax=0.5, linestyle='-', color='r'
)
# 添加垂直参考线(在x=0处)
plt.axvline(x=0, linestyle='-', color='r'
)# 添加垂直参考区域(x在0.5到2.0之间,透明度0.9)
plt.axvspan(xmin=0.5,xmax=2.0,alpha=0.9
)
# 添加水平参考区域(y在0.5到1.0之间,透明度0.3)
plt.axhspan(ymin=0.5,ymax=1.0,alpha=0.3
)# 添加图例(元组指定条目,loc=1为右上角,带阴影和圆角边框)
plt.legend(('正弦函数', '余弦函数'), loc=1, shadow=True, fancybox=True
)# 显示图形
plt.show()

六、案例四:销售额折线图(进阶版)

# 导入 matplotlib 库的 pyplot 模块,用于绘图
import matplotlib.pyplot as plt
# 导入 pandas 库,用于数据处理和读取 Excel 文件
import pandas as pd# 创建一个新的图形窗口,设置窗口标题为 '多柱形图',图形大小为 9x6 英寸,背景颜色为白色
plt.figure(num='折线图', figsize=(9, 6), facecolor='w')# 设置 matplotlib 使用的字体为楷体,以正确显示中文
plt.rcParams['font.sans-serif'] = 'KaiTi'
# 解决负号显示为方块的问题,使负号能正常显示
plt.rcParams['axes.unicode_minus'] = False# 使用 pandas 的 read_excel 函数读取 Excel 文件 '不同产品各季度的销售额.xlsx',并将数据存储在 DataFrame 对象 df 中
df = pd.read_excel('不同产品各季度的销售额.xlsx')# 从 DataFrame 中提取 '季度' 列的数据,作为 x 轴的数据
x = df['季度']
# 从 DataFrame 中提取 '产品A' 列的数据,作为产品 A 的销售额数据
y1 = df['产品A']
# 从 DataFrame 中提取 '产品B' 列的数据,作为产品 B 的销售额数据
y2 = df['产品B']
# 从 DataFrame 中提取 '产品C' 列的数据,作为产品 C 的销售额数据
y3 = df['产品C']# 设置图表的标题为 '不同产品各季度的销售额',字体大小为 20
plt.title('不同产品各季度的销售额', fontsize=20)# 设置 y 轴的标签为 '销售额(元)'
plt.ylabel('销售额(元)', fontsize=16)# 设置 y 轴的取值范围为 0 到 10000
plt.ylim(0, 10000)# 在图表中添加网格线,方便观察数据
plt.grid()# 遍历产品 A 的每个数据点,在数据点上方 500 个单位处添加销售额的文本标签
for a, b in zip(x, y1):# 在坐标 (a, b+500) 处添加文本,文本内容为 b 的整数值,水平居中对齐plt.text(a, b + 500, '%d' % b, ha='center')# 绘制产品 A 的折线图,x 轴为季度数据,y 轴为产品 A 的销售额数据,线条颜色为红色,样式为虚线,数据点用圆形标记
plt.plot(x, y1, 'r:o')# 遍历产品 B 的每个数据点,在数据点上方 500 个单位处添加销售额的文本标签
for a, b in zip(x, y2):# 在坐标 (a, b+500) 处添加文本,文本内容为 b 的整数值,水平居中对齐plt.text(a, b + 500, '%d' % b, ha='center')# 绘制产品 B 的折线图,x 轴为季度数据,y 轴为产品 B 的销售额数据,线条颜色为黄色,样式为点划线,数据点用菱形标记
plt.plot(x, y2, 'y-.D')# 遍历产品 C 的每个数据点,在数据点上方 200 个单位处添加销售额的文本标签
for a, b in zip(x, y3):# 在坐标 (a, b+200) 处添加文本,文本内容为 b 的整数值,水平居中对齐plt.text(a, b + 200, '%d' % b, ha='center')# 绘制产品 C 的折线图,x 轴为季度数据,y 轴为产品 C 的销售额数据,线条颜色为蓝色,样式为双虚线,数据点用特定样式标记
plt.plot(x, y3, 'b--4')# 添加图例,图例标签分别为 '产品A'、'产品B'、'产品C',添加阴影效果和圆角边框
plt.legend(['产品A', '产品B', '产品C'], shadow=True, fancybox=True)# 显示绘制好的图表
plt.show()

 七、案例五:不同行业的平均工资(进阶版)


# 导入 matplotlib 库中的 pyplot 模块,该模块提供了类似于 MATLAB 的绘图接口,用于创建各种图表
import matplotlib.pyplot as plt
# 导入 pandas 库,它是一个强大的数据处理和分析工具,常用于读取和处理结构化数据
import pandas as pd# 创建一个新的图形窗口,设置窗口标题为 '2021年各行业城镇单位就业人员年平均工资'
# 图形的大小为 12 英寸宽,9 英寸高,背景颜色设置为白色
plt.figure(num='2021年各行业城镇单位就业人员年平均工资', figsize=(12, 9), facecolor='w')# 设置 matplotlib 的字体为黑体,这样可以正确显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']# 使用 pandas 的 read_excel 函数读取 Excel 文件 '不同行业城镇单位就业人员年平均工资.xlsx'
# 并将文件中的数据存储在 DataFrame 对象 df 中
df = pd.read_excel('不同行业城镇单位就业人员年平均工资.xlsx')# 从 DataFrame 对象 df 中提取 '行业' 列的数据,存储在变量 hy 中
hy = df['行业']
# 从 DataFrame 对象 df 中提取 '2021年' 列的数据,存储在变量 yuan 中
yuan = df['2021年']# 为图表设置标题,标题内容为 '2021年各行业城镇单位就业人员年平均工资'
# loc='center' 表示标题居中显示
plt.title('2021年各行业城镇单位就业人员年平均工资', loc='center')# 取消 x 轴标签的设置,注释掉的代码原本是打算设置 x 轴标签为 "行业"
# plt.xlabel("行业")# 设置 y 轴的标签为 "单位(元)"
plt.ylabel("单位(元)")# 在图表中添加网格线,方便查看数据点的位置和数值
plt.grid()# 绘制一条水平参考线,y 的位置为所有行业 2021 年平均工资的平均值
# 这里假设数据有 19 个行业,linestyle=':' 表示参考线的样式为虚线
plt.axhline(y=sum(yuan)/19, linestyle=':')# 设置 x 轴刻度标签的属性
# rotation=290 表示将刻度标签逆时针旋转 290 度,近似垂直显示
# fontsize=10 表示将刻度标签的字体大小设置为 10
# 注释掉的 va='center' 原本是想让标签垂直居中
plt.xticks(rotation=290,fontsize=10,# va='center'
)# 调整子图的布局,增加底部的边距为 0.25,防止 x 轴标签与图表底部重叠
plt.subplots_adjust(bottom=0.25)# 使用 zip 函数将行业名称和对应的 2021 年平均工资组合成元组
# 遍历这些元组,在每个数据点的位置添加文本标签
for a, b in zip(hy, yuan):# 在坐标 (a, b) 处添加文本标签,标签内容为该行业 2021 年平均工资,格式为 'X 元'# ha='right' 表示文本水平右对齐,va='bottom' 表示文本垂直底部对齐plt.text(a, b, '%d元' % b, ha='right', va='bottom')# 绘制折线图,x 轴为行业名称,y 轴为 2021 年各行业平均工资
# 'r-D' 表示线条颜色为红色,样式为虚线,数据点用菱形标记
plt.plot(hy, yuan, 'r-D')# 为图表添加图例,图例中显示 '平均值参考线' 和 '各行业的评价工资'(这里可能存在拼写错误,应为 '各行业的平均工资')
# loc=1 表示图例显示在右上角,shadow=True 为图例添加阴影效果,fancybox=True 为图例添加圆角边框
plt.legend(('平均值参考线', '各行业的评价工资'), loc=1, shadow=True, fancybox=True)# 将绘制好的图表保存为名为 '2021年各行业城镇单位就业人员年平均工资.png' 的图片文件
plt.savefig('2021年各行业城镇单位就业人员年平均工资.png')# 显示绘制好的图表
plt.show()

 

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

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

相关文章

ubuntu 20.04 安装源码编译 ros humble过程

公司要兼容ros1还需要ros2 这个时候不得不使用ubuntu20.04 安装 humble 但实际上在20.04上安装humble是需要在源码编译的。 根据这个帖子 https://blog.csdn.net/m0_62353836/article/details/129730981 重写一份,以应对无法下载的问题 系统配置 #检查是否为UTF-8编码,是则跳…

CVPR‘25 SOTA——GoalFlow论文精读

1)第一遍___粗读 Q: 这篇论文试图解决什么问题? A: 这篇论文提出了一个名为 GoalFlow 的端到端自动驾驶方法,旨在解决自动驾驶场景中高质量多模态轨迹生成的问题。具体而言,它试图解决以下问题: 轨迹选择的复杂性&am…

关于 CSDN的C知道功能模块 的详细解析,包括 新增的AI搜索(可选深度思考) 和 智能体功能 的具体说明及对比分析

以下是关于 CSDN的C知道功能模块 的详细解析,包括 新增的AI搜索(可选深度思考) 和 智能体功能 的具体说明及对比分析: 一、C知道核心功能模块详解(基础功能) (参考前文内容,此处略…

forms实现快读阅读器

forms实现快读阅读器 主要功能包括: ​​1.文本自动分块显示​​:按设定的速度逐词显示文本内容。 ​​2.阅读控制​​:开始/停止按钮以及回车键控制。 ​​3.界面自定义​​:包括字体、颜色(前景色和背景色&#xff…

PowerBI 条形图显示数值和百分比

数据表: 三个度量值 销售额 VAR Sales SUM(销量表[销售量]) RETURNIF(ISBLANK(sales), 0, sales) //希望Y轴显示所有产品(没有记录显示0)就加这个代码,不希望显示就不加//注意, 因为Y轴显示的产品,会被筛选,所以用ALLSELECTED来获取当前筛…

python: audioFlux XXCC 提取梅尔频率倒谱系数 MFCC

承上一篇:python:audioFlux 使用教程 XXCC: 倒谱系数,支持所有频谱类型. 可以提取梅尔频率倒谱系数(MFCC) Cepstrum coefficients, supports all spectrum types. 以下是使用 audioflux 库中 XXCC 类计算倒谱系数…

为 docker 拉取镜像配置代理

为 Docker 配置代理,有 两个层面 的操作:(1) Docker 守护进程(用于拉取镜像等操作),(2) Docker 容器内部(容器内应用的网络流量)。 我们这篇文章着重于前者,以下是详细步骤&#xff…

最新的es版本忘记密码,重置密码

刚刚安装了最新的es版本,就忘了密码,怎么重置密码呢? 一、进入es的斌目录 #进入es文件/bin 目录 ./elasticsearch-reset-password -u elastic 二 、输入对应的密码 然后再次访问 我的是去掉了ssl的访问 三、如果报错:解决 [main] WARN

cursor如何集成MCP服务

本文主要介绍 Cursor IDE 是如何通过 Model Context Protocol (MCP) 服务来增强其功能的。本文将重点介绍两个核心 MCP 服务的集成:GitHub MCP 服务和 Filesystem MCP 服务。 MCP 服务简介 MCP(Model Context Protocol)是一个允许 IDE 与各…

Linux LED驱动(gpio子系统)

0. gpio子系统 gpio子系统是linux内核当中用于管理GPIO资源的一套系统,它提供了很多GPIO相关的API接口,驱动程序中使用GPIO之前需要向gpio子系统申请。 gpio子系统的主要目的就是方便驱动开发者使用gpio,驱动开发者在设备树中添加gpio相关信息…

go中new和make有什么异同?

相同点:都是给变量分配内存 不同点: 作用类型不同。new通常给int、string、数组类型的变量分配内存,而make通常给slice、map、channel分配内存。返回值类型不同。new返回指向变量的指针,make返回的是变量本身new分配内存空间后&…

C/C++基础知识点

随着工作中琐事越来越多,静下来好好敲代码的时间越来越少,基础知识虽然简单,但常看常新,并记录下来共勉。 一、基础知识点 1. 内存区域中数据管理 在C和C中,内存分为多个区域,每个区域负责存储不同类型的…

消息中间件kafka,rabbitMQ

在分布式系统中,消息中间件是实现不同组件之间异步通信的关键技术。Kafka 和 RabbitMQ 是两个非常流行的消息中间件系统,它们各自有着不同的特点和应用场景。下面将分别介绍 Kafka 和 RabbitMQ,并讨论它们在消息队列中的使用。 一、Kafka (Apache Kafka) 主要特点: 高吞吐…

2k1000LA , 调试串口改成通信串口, uart.

客户的问题解决了,但是 调试串口 改成通信串口的问题,并没有解决,我走的其他的路径。 先准备一些资料。 以备以后使用。 网上的资料。 总结: 实际上 有几种思路了。 1 就是更改 设备树的 chosen 节点, 瑞芯微又单独…

springboot集成spring-cloud-context手动刷新并读取更新后的配置文件

背景 springboot单体项目在运行过程需要刷新springboot配置文件值,比如某个接口限流阈值,新增某个账户等场景。分布式设计的可以直接引入一些持久化中间件比如redis等,也可以用相关配置中心中间件如nacos等。处于成本等场景单体项目可以考虑①…

proteus8.17 环境配置

Proteus介绍 Proteus 8.17 是一款功能强大的电子设计自动化(EDA)软件,广泛应用于电子电路设计、仿真和分析。以下是其主要特点和新功能: ### 主要功能 - **电路仿真**:支持数字和模拟电路的仿真,包括静态…

手机端可部署的开源大模型; 通义千问2.5训练和推理需要的内存和外存

手机端可部署的开源大模型 目录 手机端可部署的开源大模型Qwen2.5 0.5B 7b 推理采用手机内存需要多少Qwen2.5 0.5B不同量化精度下的内存需求Qwen2.5 7B不同量化精度下的内存需求通义千问2.5训练和推理需要的内存和外存推理阶段1. Qwen2.5 - 7B2. Qwen2.5 - 14B3. Qwen2.5 - 72B…

【uniapp-兼容性处理】swiper在iOS上偶发出现后几张图片白屏情况

【日期】2025-04-14 【问题】 swiper在iOS上偶发出现后几张图片白屏情况 swiper内部的几个swiper-item垂直排列,各自进行滚动,样式方面兼容性出现问题 【原因】: 原代码:(不应在swiper-item添加style属性&#xf…

SpringBoot连接MQTT客户端

引入依赖 <dependency><groupId>org.eclipse.paho</groupId><artifactId>org.eclipse.paho.client.mqttv3</artifactId><version>1.2.2</version> </dependency> 启动类 SpringBootApplication public class AxiosDemoApplic…

HTML:网页的骨架 — 入门详解教程

HTML&#xff1a;网页的骨架 — 入门详解教程 HTML&#xff08;HyperText Markup Language&#xff0c;超文本标记语言&#xff09;是构建网页的基础语言&#xff0c;负责定义网页的结构和内容。无论是简单的个人博客&#xff0c;还是复杂的企业网站&#xff0c;HTML都是不可或…