100天精通Python(可视化篇)——第79天:matplotlib绘制不同种类炫酷折线图代码实战(网格、趋势、对比、百分比、多条折线、堆积、百分比堆积、多坐标子图、3D折线图)
创始人
2025-05-31 17:09:27

文章目录

  • 0. 专栏导读
  • 1. 普通折线图
  • 2. 网格折线图
  • 3. 趋势折线图
  • 4. 对比折线图
  • 5. 百分比折线图
  • 6. 多条折线图
  • 7. 多坐标子图
  • 8. 堆积折线图
  • 9. 百分比堆积折线图
  • 10. 3D折线图
  • 书籍推荐

0. 专栏导读

  • 🏆🏆作者介绍:Python领域优质创作者、CSDN/华为云/阿里云/掘金/知乎等平台专家博主

  • 🔥🔥本文已收录于Python全栈系列专栏:《100天精通Python从入门到就业》
  • 📝​📝​此专栏文章是专门针对Python零基础小白所准备的一套完整教学,从0到100的不断进阶深入的学习,各知识点环环相扣
  • 🎉🎉订阅专栏后续可以阅读Python从入门到就业100篇文章还可私聊进千人Python全栈交流群(手把手教学,问题解答); 进群可领取80GPython全栈教程视频 + 300本计算机书籍:基础、Web、爬虫、数据分析、可视化、机器学习、深度学习、人工智能、算法、面试题等。
  • 🚀🚀加入我一起学习进步,一个人可以走的很快,一群人才能走的更远!

在这里插入图片描述
在这里插入图片描述

1. 普通折线图

import matplotlib.pyplot as pltx = range(2, 26, 2)  # 数据在x轴的位置,是一个可迭代对象
y = [15, 13, 14.5, 17, 20, 25, 26, 26, 27, 22, 18, 15]  # 数据在y轴的位置,是一个可迭代对象
"""
x轴和y轴的数据一起组成了所有要绘制出的坐标
分别是(2,15)、(4,13)、(6,14.5)、(8,17)......
"""
plt.plot(x, y)  # 传入x和y,通过plot绘制出折线图
plt.show()  # 在执行程序的时候展示出图形

运行结果:
在这里插入图片描述

2. 网格折线图

网格折线图是一种在折线图上添加网格线的可视化方式。它可以帮助读者更清晰地看到数据的趋势和变化,同时也可以帮助读者更准确地读取数据。网格折线图通常用于展示时间序列数据或其他连续变量的趋势。在网格折线图中,横轴通常表示时间或其他连续变量,纵轴表示数据的值。通过添加网格线,可以更清晰地看到数据的变化和趋势,同时也可以更准确地读取数据。

通过设置网格:plt.grid(alph=0.4),alph=0.4表示设置透明度,也可以省略不设置

import matplotlib.pyplot as plt
import random
import matplotlib# 设置字体方法1
matplotlib.rc("font", family='MicroSoft YaHei', weight='bold')x = range(0, 120)
y = [random.randint(20, 35) for i in range(120)]# 设置图片大小
fig = plt.figure(figsize=(20, 8), dpi=80)
# 调整x轴刻度
_xtick_labels = ["10点{}分".format(i) for i in range(60)]
_xtick_labels += ["11点{}分".format(i) for i in range(60)]
# 设置步长
plt.xticks(list(x)[::3], _xtick_labels[::3], rotation=45)  # rotation旋转刻度的度数
#设置图例
plt.xlabel("时间")
plt.ylabel("温度 单位(℃)")
plt.title("10点到12点每分钟的气温变化情况图")
# 设置网格
plt.grid()# 绘图
plt.plot(x, y)
# 显示图片
plt.show()

运行结果:
在这里插入图片描述

3. 趋势折线图

趋势折线图是一种在折线图上添加趋势线的可视化方式。它可以帮助读者更清晰地看到数据的趋势和变化,同时也可以帮助读者更准确地预测未来的趋势。趋势折线图通常用于展示时间序列数据或其他连续变量的趋势。在趋势折线图中,横轴通常表示时间或其他连续变量,纵轴表示数据的值。通过添加趋势线,可以更清晰地看到数据的趋势,同时也可以更准确地预测未来的趋势。趋势折线图可以帮助读者更好地理解数据,从而做出更准确的决策。

这个代码案例生成了一个趋势折线图,其中数据是sin(x)加上一些随机噪声。通过添加趋势线,可以更清晰地看到数据的趋势。可以通过修改数据和绘图参数来绘制不同的趋势折线图。

import numpy as np
import matplotlib.pyplot as plt# 生成数据
x = np.linspace(0, 10, 100)
y = np.sin(x) + np.random.rand(100)# 绘制趋势折线图
fig, ax = plt.subplots()
ax.plot(x, y, label='Data')# 添加趋势线
z = np.polyfit(x, y, 1)
p = np.poly1d(z)
ax.plot(x, p(x), 'r--', label='Trend')# 设置图例和标题
ax.legend()
ax.set_title('Trend Line Plot')# 显示图像
plt.show()

运行结果:
在这里插入图片描述

4. 对比折线图

对比折线图是一种在同一张图上展示多个数据系列的可视化方式。它可以帮助读者更直观地比较不同数据系列之间的差异和相似之处,从而更好地理解数据。对比折线图通常用于展示时间序列数据或其他连续变量的趋势。在对比折线图中,横轴通常表示时间或其他连续变量,纵轴表示数据的值。通过在同一张图上展示多个数据系列,可以更直观地比较它们之间的差异和相似之处,从而更好地理解数据。对比折线图可以帮助读者更好地分析数据,从而做出更准确的决策。

这个代码案例生成了一个对比折线图,其中包含了sin(x)和cos(x)两条线。可以通过修改数据和绘图参数来绘制不同的对比折线图

import numpy as np
import matplotlib.pyplot as plt# 生成数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)# 绘制对比折线图
fig, ax = plt.subplots()
ax.plot(x, y1, label='Sin')
ax.plot(x, y2, label='Cos')# 设置图例和标题
ax.legend()
ax.set_title('Comparison Line Plot')# 显示图像
plt.show()

运行结果:
在这里插入图片描述

5. 百分比折线图

百分比折线图是一种用于显示百分比数据变化的图表类型。它可以帮助我们更直观地了解数据的变化趋势和比例关系。百分比折线图通常用于比较不同组别或时间段的数据变化情况,例如市场份额、销售额、用户增长率等。

这个代码案例生成了一个百分比折线图,其中数据是随机生成的。通过将数据转换为百分比,并设置y轴为百分比格式,可以更直观地显示数据。可以通过修改数据和绘图参数来绘制不同的百分比折线图。


import numpy as np
import matplotlib.pyplot as plt# 生成数据
x = np.linspace(0, 10, 100)
y = np.random.rand(100)# 将数据转换为百分比
y = y * 100# 绘制百分比折线图
fig, ax = plt.subplots()
ax.plot(x, y)# 设置y轴为百分比格式
fmt = '%.0f%%'
yticks = plt.FormatStrFormatter(fmt)
ax.yaxis.set_major_formatter(yticks)# 设置标题
ax.set_title('Percentage Line Plot')# 显示图像
plt.show()

运行结果:
在这里插入图片描述

6. 多条折线图

多条折线图是一种用于比较多组数据变化情况的图表类型。它可以同时显示多组数据的变化趋势,帮助我们更直观地了解不同组别或时间段之间的差异和相似之处。多条折线图通常用于比较不同产品、不同地区或不同时间段的销售额、用户增长率等。


import matplotlib.pyplot as plt# 数据
x = [1, 2, 3, 4, 5]
y1 = [2, 4, 6, 8, 10]
y2 = [1, 3, 5, 7, 9]
y3 = [3, 6, 9, 12, 15]# 绘制折线图
plt.plot(x, y1, label='Line 1')
plt.plot(x, y2, label='Line 2')
plt.plot(x, y3, label='Line 3')# 添加图例
plt.legend()# 添加标题和标签
plt.title('Multiple Lines')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')# 显示图形
plt.show()

运行结果:
在这里插入图片描述

7. 多坐标子图

多坐标子图是一种将多个图表组合在一起的图表类型。它可以在同一图表中显示不同的数据,每个数据集都有自己的坐标轴。多坐标子图通常用于比较不同数据集之间的关系,例如比较不同产品的销售额和利润率。

多坐标子图:fig.add_subplot(a, b, c)

  • a,b:表示将fig分割成 a*b 的区域

  • c:表示当前选中要操作的区域,

  • 注意:从1开始编号(不是从0开始),plot 绘图的区域是最后一次指定subplot的位置 (jupyter notebook里不能正确显示)

import numpy as np
import matplotlib.pyplot as plt# 数据
x=np.arange(1,100)#设置画布
fig=plt.figure(figsize=(20,8),dpi=80)# 使用add_subplot方法向 fig新增子图,(2,2,1)表示将画布分为2行2列,1表示占用序号为1的画布位置
ax1=fig.add_subplot(2,2,1)
plt.plot(x,x)
ax2=fig.add_subplot(2,2,2)
plt.plot(x,x**2)
ax3=fig.add_subplot(2,2,3)
plt.plot(x,np.log(x))# 显示图形
plt.show()

运行结果:
在这里插入图片描述

8. 堆积折线图

堆积折线图是一种用于显示多组数据在时间或其他维度上的变化趋势的图表类型。它可以将多组数据堆积在一起,显示它们在不同时间或其他维度上的变化情况。堆积折线图通常用于比较不同产品、不同地区或不同时间段的销售额、用户增长率等。

这段代码会绘制出一个堆积折线图,其中包含三条折线,分别对应y1、y2、y3三个数据集。使用fill_between函数填充折线下方的区域,实现堆积效果。同时,设置图像样式,包括去除上、右边框线、设置轴线宽度、去除刻度线、设置x轴刻度标签、设置y轴标签和图例等,使图像更加美观。

import matplotlib.pyplot as plt# 数据
x = [1, 2, 3, 4, 5]
y1 = [10, 20, 30, 40, 50]
y2 = [5, 15, 25, 35, 45]
y3 = [2, 10, 20, 30, 40]# 绘制堆积折线图
fig, ax = plt.subplots()
ax.plot(x, y1, label='y1', linewidth=2)
ax.plot(x, y2, label='y2', linewidth=2)
ax.plot(x, y3, label='y3', linewidth=2)
ax.fill_between(x, y1, 0, alpha=0.2)
ax.fill_between(x, y1, y2, alpha=0.2)
ax.fill_between(x, y2, y3, alpha=0.2)# 设置图像样式
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['bottom'].set_linewidth(0.5)
ax.spines['left'].set_linewidth(0.5)
ax.tick_params(axis='both', which='both', length=0)
ax.set_xticks(x)
ax.set_xticklabels(['Jan', 'Feb', 'Mar', 'Apr', 'May'])
ax.set_ylabel('Value')
ax.legend()# 显示图像
plt.show()

运行结果:
在这里插入图片描述

9. 百分比堆积折线图

百分比堆积折线图是一种用于显示多组数据在时间或其他维度上的变化趋势的图表类型。它可以将多组数据堆积在一起,并将它们的值转换为百分比,显示它们在不同时间或其他维度上的变化情况。百分比堆积折线图通常用于比较不同产品、不同地区或不同时间段的市场份额、销售额、用户增长率等。


import matplotlib.pyplot as plt# 数据
x = [1, 2, 3, 4, 5]
y1 = [10, 20, 30, 40, 50]
y2 = [5, 15, 25, 35, 45]
y3 = [2, 10, 20, 30, 40]# 计算每个数据集的百分比
total = [sum(i) for i in zip(y1, y2, y3)]
y1_percent = [i/j*100 for i,j in zip(y1, total)]
y2_percent = [i/j*100 for i,j in zip(y2, total)]
y3_percent = [i/j*100 for i,j in zip(y3, total)]# 绘制百分比堆积折线图
fig, ax = plt.subplots()
ax.plot(x, y1_percent, label='y1', linewidth=2)
ax.plot(x, y2_percent, label='y2', linewidth=2)
ax.plot(x, y3_percent, label='y3', linewidth=2)
ax.fill_between(x, y1_percent, 0, alpha=0.2)
ax.fill_between(x, y1_percent, y2_percent, alpha=0.2)
ax.fill_between(x, y2_percent, y3_percent, alpha=0.2)# 设置图像样式
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['bottom'].set_linewidth(0.5)
ax.spines['left'].set_linewidth(0.5)
ax.tick_params(axis='both', which='both', length=0)
ax.set_xticks(x)
ax.set_xticklabels(['Jan', 'Feb', 'Mar', 'Apr', 'May'])
ax.set_ylabel('Percentage')
ax.legend()# 显示图像
plt.show()

运行结果:
在这里插入图片描述

10. 3D折线图

3D折线图是一种用于显示三维数据变化情况的图表类型。它可以将三维数据以折线的形式呈现出来,帮助我们更直观地了解数据的变化趋势和比例关系。3D折线图通常用于比较不同产品、不同地区或不同时间段的销售额、用户增长率等。
在希望将多个折线图绘制在一起时,除了在2D平面上绘制多条折线图外,我们还可以在3维立体空间里去绘制它们,这样可以更加清晰地观察它们之间的差距。

这里我们直接上python代码,代码中有注释,下面这段代码的含义在一个3D空间内绘制3条折线图(可以理解为绘制某一个主体在周一到周三某个数据的情况),同样使用的随机生成的假数据。

import random
import matplotlib.pyplot as plt
import numpy as np
import pylab as mpl
mpl.rcParams['font.sans-serif'] = ['FangSong']  # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
xs = list(range(0,24)) #数据在x轴上的坐标for z in range(3):#这里我们设置z=0到2,代表周一到周三ys = np.random.rand(24)*100 #数据在y轴上的坐标color = plt.cm.Set2(random.choice(range(plt.cm.Set2.N))) #得到一个随机的颜色用于下面绘制该条折线图ax.plot(xs, ys, zs=z, zdir='y',color=color,marker='o', alpha=0.8)#在设置zdir = 'y'的情形下,其实y轴才是z轴,然后z轴变成了y轴
ax.set_xlabel('X轴')
ax.set_ylabel('Z轴')
ax.set_zlabel('Y轴')# 显示图像
plt.show()

运行结果:
在这里插入图片描述

书籍推荐

《人工智能数学基础》

在这里插入图片描述

全书分为 4 篇,共 17 章。其中第 1 篇为数学知识基础篇,主要讲述了高等数学基础、微积分、泰勒公式与拉格朗日乘子法;第 2 篇为数学知识核心篇,主要讲述了线性代数基础、特征值与矩阵分解、概率论基础、随机变量与概率估计;第 3 篇为数学知识提高篇,主要讲述了数据科学的几种分布、核函数变换、熵与激活函数;第 4 篇为数学知识应用篇,主要讲述了回归分析、假设检验、相关分析、方差分析、聚类分析、贝叶斯分析等内容。
如果不想抽奖当当自营购买链接:http://product.dangdang.com/29145839.html
京东:https://item.jd.com/13009168.html

相关内容

热门资讯

头歌--第1关:Linux文件... 任务描述 假设系统中存在一个文件File,修改该文件的权限,根据实际需求...
【Spring从成神到升仙系列... 👏作者简介:大家好,我是爱敲代码的小黄,独...
梦见蜈蚣是什么意思,做梦梦见蜈... 梦见蜈蚣是什么意思目录梦见蜈蚣是什么意思做梦梦见蜈蚣什么意思梦见蜈蚣是什么意思,哪里有解释啊梦见蜈蚣...
小区车位比一般是多少,车库配比... 小区车位比一般是多少目录小区车位比一般是多少车库配比是什么小区总户数8200,总车位是1450个,配...
车锁上的lock什么意思,汽车... 车锁上的lock什么意思目录车锁上的lock什么意思汽车上lock是什么意思?车子上“lock标志”...
kirin710是什么处理器,... kirin710是什么处理器目录kirin710是什么处理器海思kirin710是高通多少?骁龙71...
程序的循环结构和random库...   第三个参数就是步长     引入文件时记得指明字符格式,否则读入不了 ...
跟着文档制作cocos第一个游... 背景 近期打算学习一下cocos creator,想着开发自己的游戏,是...
乌干达是什么梗,网络语乌干达什... 乌干达是什么梗目录乌干达是什么梗网络语乌干达什么意思?乌干达是什么梗乌干达是什么梗乌干达是什么梗 ...
车载电子狗怎么用,怎样使用电子... 车载电子狗怎么用目录车载电子狗怎么用怎样使用电子狗怎么使用电子狗求简答车载电子狗怎么使用车载电子狗怎...
梦见偷东西是什么意思,梦见自己... 梦见偷东西是什么意思目录梦见偷东西是什么意思梦见自己偷东西是什么意思?做梦梦见自己偷东西好不好梦见偷...
黄金瞳到底是什么,黄金瞳电视剧... 黄金瞳到底是什么目录黄金瞳到底是什么黄金瞳电视剧什么时候上映?《黄金瞳》的结局是什么?电视剧《黄金瞳...
前端-session、jwt 目录:   (1)session (2&#x...
企业即时通讯怎样为企业实现移动... 对于企业来说,在办公过程中少不了工作人员相互传递信息和数据传输,企业内部...
骑行选择什么自行车 极速百科网... 骑行选择什么自行车目录骑行选择什么自行车骑行选择什么自行车 1. 山地自行车:适合崎岖不平的路...
蓝色都有哪几种,蓝色都有什么颜... 蓝色都有哪几种目录蓝色都有哪几种蓝色都有什么颜色的蓝图片,蓝色都有什么颜色的蓝二年级蓝色有哪些种类蓝...
如何自学游泳要安全的,初学游泳... 如何自学游泳要安全的目录如何自学游泳要安全的初学游泳的人需要准备哪些东西,注意哪些事项?如何自学游泳...
一年级家长的话怎么写评语,一年... 一年级家长的话怎么写评语目录一年级家长的话怎么写评语一年级学生评价手册家长寄语怎么写一年级最佳家长评...
EEG微状态的功能意义 导读大脑的瞬时全局功能状态反映在其电场结构上。聚类分析方法一致地提取了四种头表面脑电场结构ÿ...
docker 镜像管理 查看本地镜像 docker images 可以查看本地下载的镜像 docker images [O...
k8s-1.22.15部署ng... 1.介绍 在前面文章中已经提到,Service对集群之外暴露服务的主要方式有两种&#x...
革命烈士寄语怎么写,清明节缅怀... 革命烈士寄语怎么写目录革命烈士寄语怎么写清明节缅怀先烈的寄语有哪些呢?革命烈士寄语怎么写 革命...
5万元以下新车推荐,5万以下买... 本篇文章极速百科给大家谈谈5万元以下新车推荐,5万以下买什么车好,以及5万以下的新车哪款最好对应的知...
真皮沙发翻新一般多少钱?(真皮... 本篇文章极速百科给大家谈谈真皮沙发翻新一般多少钱?,以及真皮沙发翻新一般多少钱一个对应的知识点,希望...
磨皮什么意思(磨皮是啥?) 磨... 本篇文章极速百科给大家谈谈磨皮什么意思,以及磨皮是啥?对应的知识点,希望对各位有所帮助,不要忘了收藏...
进程间通信【Linux】 1. 进程间通信 1.1 什么是进程间通信 在 Linux 系统中,进程间通信...
从NVIDIA GTC大会,看... 从NVIDIA GTC 2023这场全球行业盛宴,我们可以解读出AI算力行业的哪些重要...
请问什么是童子,什么是童子 极... 请问什么是童子目录请问什么是童子什么是童子古代 童子是什么意思童子是什么意思?请问什么是童子 ...
中招考试考哪些科目,中招考试考... 中招考试考哪些科目目录中招考试考哪些科目中招考试考几门科目一共多少分?中考有哪些科目中考考几科,都什...
做电商如何做,电商怎样做才能赚... 做电商如何做目录做电商如何做电商怎样做才能赚钱?做的好的电商朋友可以教教我怎么做吗新手小白怎么做跨境...