Matplotlib

2023-11-12

1.什么是matplotlib?

Matplotlib是一个用于绘制数据可视化图形的Python库。它是一个广泛使用的数据可视化工具,可用于创建各种类型的静态、动态和交互式图形,从简单的折线图到复杂的3D图形都可以轻松实现。
在这里插入图片描述
可视化是在整个数据挖掘的关键辅助工具,可以清晰的理解数据,从而调整我们的分析方法。能将数据进行可视化,更直观的呈现,使数据更加客观、更具说服力。

matplotlib可以使用pip命令进行安装

pip install matplotlib

2.实现一个简单的matplotlib绘图

import matplotlib.pyplot as plt
# x,y轴
x=[1,2,3,4,5,6,7]
y=[10,9,8,11,12,9,8]
# 创建画布
plt.figure(figsize=(20,6),dpi=100)

# 绘制折线图
plt.plot(x,y)

# 显示绘图
plt.show()

在这里插入图片描述

3.matplotlib图像结构

在这里插入图片描述

4.matplotlib基础绘图

使用matplotlib完成基础绘图,以折线图为例
需求:画出某城市11点到12点1小时内每分钟的温度变化折线图,温度范围在15度~18度

import matplotlib.pyplot as plt
import random
from pylab import mpl

# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]

# x轴的数据为0到59,此处使用了range方法来生成一个整数序列 
x=range(60) 
# y轴的数据
y=[random.uniform(15,18) for i in x]
y2=[random.uniform(7,9) for i in x]

# 添加自定义x,y刻度
x_ticks = ["11点{}分".format(i) for i in x]
y_ticks = [0,5,10,15,20,25,30]


# 创建画布
plt.figure(figsize=(20,10),dpi=100)

# 添加网格显示
plt.grid(True,linestyle='--',alpha=0.8)

# 添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11点到12点之间的温度变化如图所示",fontsize=20)

# 绘制折线图
plt.plot(x,y,label="上海")
plt.plot(x,y2,label="北京")

# 修改x轴y轴的刻度显示
plt.xticks(x[::5],x_ticks[::5])
plt.yticks(y_ticks)

# 保存图片
plt.savefig("./test.png")

# 显示图例
plt.legend(loc="best")
# 显示
plt.show()

在这里插入图片描述

注意:
1.当random.uniform(a, b)与for循环结合使用时,它表示在给定的范围内生成多个随机浮点数,并通过循环遍历这些生成的随机数。
2.plt.show()会释放figure资源,如果在显示图像之后保存图片将只能保存空图片。

多个坐标系显示— plt.subplots(面向对象的画图方法)

需求:将北京和上海的天气图显示在同一个图的不同坐标系当中,效果如下:
在这里插入图片描述
在Matplotlib中,subplots()函数用于创建一个图形和一个包含多个子图(axes)的网格。它提供了一种方便的方式在一个图形中创建多个图表。该函数返回图形和一个axes数组,你可以使用这些axes对象来绘制你的数据。

fig, ax = plt.subplots(nrows, ncols, **kwargs)
以下是各个参数的说明:
nrows:表示你要创建的子图的行数。
ncols:表示你要创建的子图的列数。
**kwargs:附加的关键字参数,用于自定义图形和axes的属性。
fig:图形对象,表示整个图形,可用于设置整个图形的属性,比如图形大小、背景颜色等。
ax:一个axes对象的数组,表示子图。你可以使用这些axes对象来绘制数据和设置各个子图的属性。

代码:

# 0.准备数据
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]
y_beijing = [random.uniform(1, 5) for i in x]
# 1.创建画布
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 8), dpi=100)
# 2.绘制图像
# plt.plot(x, y_shanghai, label="上海")
# plt.plot(x, y_beijing, color="r", linestyle="--", label="北京")
axes[0].plot(x, y_shanghai, label="上海")
axes[1].plot(x, y_beijing, color="r", linestyle="--", label="北京")
# 2.1 添加x,y轴刻度
# 构造x,y轴刻度标签
x_ticks_label = ["11点{}分".format(i) for i in x]
y_ticks = range(40)
# 刻度显示
# plt.xticks(x[::5], x_ticks_label[::5])
# plt.yticks(y_ticks[::5])
axes[0].set_xticks(x[::5])
axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_label[::5])
axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_label[::5])
# 2.2 添加网格显示
# plt.grid(True, linestyle="--", alpha=0.5)
axes[0].grid(True, linestyle="--", alpha=0.5)
axes[1].grid(True, linestyle="--", alpha=0.5)
# 2.3 添加描述信息
# plt.xlabel("时间")
# plt.ylabel("温度")
# plt.title("中午11点--12点某城市温度变化图", fontsize=20)
axes[0].set_xlabel("时间")
axes[0].set_ylabel("温度")
axes[0].set_title("中午11点--12点某城市温度变化图", fontsize=20)
axes[1].set_xlabel("时间")
axes[1].set_ylabel("温度")
axes[1].set_title("中午11点--12点某城市温度变化图", fontsize=20)
# # 2.4 图像保存
plt.savefig("./test.png")
# # 2.5 添加图例
# plt.legend(loc=0)
axes[0].legend(loc=0)
axes[1].legend(loc=0)
# 3.图像显示
plt.show()

5.常见图形种类

1.折线图:plt.plot(x,y)
2.散点图:plt.scatter(x,y)
3.柱状图:plt.bar(x, width, align=‘center’, **kwargs)

Parameters: x : 需要传递的数据
width : 柱状图的宽度
align : 每个柱状图的位置对齐方式 {‘center’,‘edge’}, optional, default: ‘center’
**kwargs : color:选择柱状图的颜色

4.直方图:plt.hist(x, bins=None)

Parameters: x : 需要传递的数据 bins : 组距

5.饼图:plt.pie(x, labels=,autopct=,colors)

Parameters: x:数量,自动算百分比
labels:每部分名称
autopct:占比显示指定%1.2f%%
colors:每部分颜色

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matplotlib 的相关文章

随机推荐

  • 09.8 python基础--PyQt5库

    09 8 1 程序 coding utf 8 import sys from PyQt5 import QtWidgets from PyQt5 QtGui import QFont QIcon QtWidgets不包含QFont必须调用Q
  • 搭建karma+mocha+chai+webpack的支持es6的单元测试

    问题背景 首先 在搭建之前要知道在什么情况下需要karma mocha chai webpack的单元测试呢 首先你写的项目是一个前端项目 是运行在浏览器中的 写好的代码包含了es6的语法 则需要搭建这样一个单元测试环境 mocha是真正的
  • 将一句汉字文本转化为对应的拼音

    语音合成时 数据预处理 需要将一句汉字文本转化为对应的拼音 其中 汉字文本包含标点符号 而拼音含有声调不含标点符号 具体格式举例如下 输入 设置文件名 怎么样 输出 she4 zhi4 wen2 jian4 ming2 zen3 me5 y
  • JAVA单元测试框架-7-invocationCount和invocationTimeOut

    1 invocationCount 字面意思就是调用的次数统计 就是这个测试用例被调用执行的次数 2 invocationTimeOut 字面意思是调用的超时 设置一个最大的毫秒数来计算执行多次后总共耗时多少 耗时值不能超过设置的最大毫秒数
  • PL0语言出错编号表

    Notes 编译原理第 3 版的书貌似没有这个表 做实验和写课设的时候很不方便 把别人拍的第 2 版书上的这个表在这备份一份 Error Code Table 出错编号 出错原因 1 常数说明中的 写成 2 常数说明中的 后应是数字 3 常
  • 为什么JAVA文件中只能含有一个Public类

    1 一个 java 源文件中是否可以包括多个类 不是内部类 有什么限制 答 可以有多个类 但只能有一个public的类 并且public的类名必须与文件名相一致 2 为什么一个文件中只能有一个public的类 答 编译器在编译时 针对一个j
  • 编程中常用设计模式

    单例模式 单例模式的优点 1 在单例模式中 活动的单例只有一个实例 对单例类的所有实例化得到的都是相同的一个实例 这样就防止了其他对象对自己的实例化 确保所有的对象都访问同一个实例 2 单例模式具有一定的伸缩性 类自己来控制实例化进程 类就
  • 【云风skynet】详解skynet的多核高并发编程丨actor模型丨游戏开发丨游戏服务端开发丨多线程丨Linux服务器开发丨后端开发

    skynet中多核高并发编程给我们的启发 1 多核并发编程 2 actor模型详解 3 手撕一个万人同时在线游戏 视频讲解如下 点击观看 云风skynet 详解skynet的多核高并发编程丨actor模型丨游戏开发丨游戏服务端开发丨多线程丨
  • C++设计日志:读写定界符文件

    C 设计日志 读写定界符文件 荣耀 2003 我将撰写的 C 设计实践 系列文章 会讲到一些数据处理系统设计方法 我并不希望文章局限于特定数据库产品 我也不喜欢空对空地讲述太多抽象道理 我必须编写一些模拟数据库操作的代码 用于读写定界符文件
  • notepad linux,适用于Linux的11种最佳Notepad ++替代品

    Notepadd 是一个完全免费的源代码编辑器 作为Windows上的 Notepad的替代品而创建 基于Scintilla在C 中编写 并实现了Win32 API和STL 以确保程序大小小 执行速度快 这些功能使其成为一个家族开发者名字
  • 有哪些值得推荐的LoRa模块?

    随着物联网技术的发展 LoRa模块已经被应用到各行各业 其在市场上受欢迎程度非比一般 业内对于LoRa技术的发展前景有着非常乐观的看法 目前国内生产LoRa相关产业的企业数量已超过数千家 创新微MinewSemi在LoRa模块方面也积累了一
  • inux启动输入密码出现module is unknown

    当启动输入密码无法登录时 重启按下e键 在linux16这一行中找到ro 将ro改变为rw 并在结尾添加init bin sh 查看 var log secure日志文件中排查错误 最终发现是 lib security pam limits
  • 2021年全国职业院校技能大赛(中职组)网络安全竞赛试题(1)详细解析教程

    2021年全国职业院校技能大赛 中职组 比赛环境可以私信博主获得 网络安全竞赛讨论可以加扣群421865857 网络安全竞赛试题 1 总分100分 赛题说明 一 竞赛项目简介 网络安全 竞赛共分A 基础设施设置与安全加固 B 网络安全事件响
  • cpp: Abstract Factory Pattern

    Gold h 此文件包含 Gold 类 Abstract Factory Pattern C 14 2023年4月30日 涂聚文 Geovin Du Visual Studio 2022 edit pragma once ifndef GO
  • C++中vector使用方法

    目录 1 基本操作 2 算法 3 输出vector的中的元素 三种方法 在C 中 vector是一个十分有用的容器 是一个能够存放任意类型的动态数组 能够增加和压缩数据 vector的优点 1 可将容器中元素翻转 复制元素 找到元素值对应的
  • 信号与系统学习总结 第三章 傅里叶变换

    信号与系统学习总结 第三章 傅里叶变换 章节思路 傅里叶级数 傅里叶变换 周期信号傅里叶变换 抽样定理 傅里叶级数 满足狄利赫里条件的周期函数f t 可以分解为a0 直流分量 cos n 1t 和sin n 1t 的和 根据欧拉公式 还可以
  • C语言实现银行家算法

    问题描述 银行家算法描述 假设系统中有n个进程 m种资源 对于该道题目而言 n为5 m为4 定义一个5 4的allocation分配矩阵 用来表示对所有进程的资源分配情况 Allocation i j k 表示进程Pi已经获得j资源k个 同
  • 区块链节点和区块区别_区块链中主链和侧链的区别

    区块链尤其是公有链都有主网和测试网 主网是区块链社区公认的可信区块链网络 其交易信息被全体成员所认可 有效的区块在经过区块链网络的共识后会被追加到主网的区块账本中 按区块链网络的独立程度 分为两种 主链 侧链 两者的区别如下 1 主链指正式
  • Windows Terminal + wsl 之调整ls命令颜色、底色方法

    1 显示预设置 执行 cd dircolors p gt dircolors 2 接着修改 用vi 可预览效果 vi dircolors 找到如下条目 修改字体颜色和背景色如下 STICKY OTHER WRITABLE 30 46 dir
  • Matplotlib

    文章目录 1 什么是matplotlib 2 实现一个简单的matplotlib绘图 3 matplotlib图像结构 4 matplotlib基础绘图 多个坐标系显示 plt subplots 面向对象的画图方法 5 常见图形种类 1 什