当前位置: 首页 > article >正文

机器学习--python基础库之Matplotlib (1) 超级详细!!!

机器学习--python基础库Matplotlib

  • 机器学习--python基础库Matplotlib
    • 0 介绍
    • 1 实现基础绘图-某城市温度变化图
      • 1.1绘制基本图像
      • 1.2实现一些其他功能
    • 2 再一个坐标系中绘制多个图像
    • 3 多个坐标系显示-plt.subplots(面向对象的画图方法)
    • 4 折线图的应用场景

机器学习–python基础库Matplotlib

0 介绍

Matplotlib 是 Python 中一个强大且广泛使用的绘图库,由 John D. Hunter 在 2003 年创建,它为
Python 提供了类似于 MATLAB
绘图接口,能帮助用户轻松地创建各种高质量的静态、动画和交互式可视化图形。以下从多个方面对其进行简要介绍: 主要特点
多样化的绘图类型:支持绘制折线图、柱状图、散点图、饼图、直方图、箱线图等多种基本图形,还能创建 3D 图形、等高线图、热力图等复杂图形,满足不同领域的数据可视化需求。

高度可定制性:几乎可以对图形的每个元素进行定制,如线条颜色、样式、宽度,坐标轴标签、刻度、范围,图形标题、图例等,能够根据具体需求创建出具有专业水准的可视化效果。
跨平台兼容性:可以在多种操作系统(如 Windows、Linux、macOS)上使用,并且支持多种后端(如 Tkinter、Qt、GTK
等),方便在不同的开发环境中集成。 与其他库集成良好:能够与 NumPy、Pandas
等科学计算库无缝集成,方便对这些库处理后的数据进行可视化展示。

基本绘图流程
使用 Matplotlib 进行绘图通常遵循以下基本步骤:

  1. 导入库:在 Python 脚本中导入 Matplotlib 的 pyplot 模块,通常使用别名 plt 来简化代码。
python import matplotlib.pyplot as plt 
  1. 准备数据:使用 NumPy 或 Pandas 等库生成或处理要绘制的数据。
import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
  1. 创建图形和坐标轴:可以使用 plt.figure() 函数创建一个新的图形窗口,然后使用 plt.plot() 等函数在该图形上绘制具体的图形。
plt.figure(figsize=(8, 6))  # 创建一个大小为 8x6 英寸的图形窗口
plt.plot(x, y)  # 绘制折线图
  1. 设置图形属性:对图形的标题、坐标轴标签、刻度、图例等进行设置,以增强图形的可读性和美观性。
plt.title('Sine Wave')  # 设置图形标题
plt.xlabel('X-axis')  # 设置 x 轴标签
plt.ylabel('Y-axis')  # 设置 y 轴标签 
  1. 显示或保存图形:使用 plt.show() 函数显示图形,或者使用 plt.savefig() 函数将图形保存为文件。
plt.show()  # 显示图形#或者保存图形
plt.savefig('sine_wave.png')

1 实现基础绘图-某城市温度变化图

1.1绘制基本图像

# import matplotlib.pyplot as plt
# import random
# 0.准备数据
x = range(60)
y_shanghai = [random.uniform(15,18) for i in x]
# 1.创建画布
plt.figure(figsize=(20,8), dpi = 100)
# 2.绘制图像
plt.plot(x, y_shanghai)
# 3.图像显示
plt.show()

在这里插入图片描述

1.2实现一些其他功能

# 设置支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号显示问题
plt.rcParams['axes.unicode_minus'] = False
import matplotlib.pyplot as plt
import random
# 0.准备数据
x = range(60)
y_shanghai = [random.uniform(15,18) for i in x]
# 1.创建画布
plt.figure(figsize=(20,8), dpi = 100)
# 2.绘制图像
plt.plot(x, y_shanghai)# 2.1 添加x,y轴刻度
x_ticks_label = ["11点{}分".format(i) for i in x] 
y_ticks = range(40)# 修改x,y轴坐标刻度显示
# plt.xticks(x[::5]) # 从头到尾间隔5个来区分
plt.xticks(x[::5], x_ticks_label[::5]) # 从头到尾间隔5个来区分
# 如果为刻度添加数字,则可以直接添加;但是如果要变成字符串,需要先修改成数字,再用字符串进行替换
plt.yticks(y_ticks[::5])# 2.2添加网格显示
# True:这是 plt.grid() 函数的第一个参数,用于控制是否显示网格线。当传入 True 时,表示要在图形中显示网格线;如果传入 False,则不会显示网格线。
# linestyle="--":该参数用于设置网格线的样式。linestyle 也可以简写成 ls。"--" 表示网格线将以虚线的形式显示。除了 "--" 之外,matplotlib 还支持其他常见的线条样式,例如:
# "-":实线(默认值)
# ":":点线
# "-.":点划线
# alpha = 0.5:alpha 参数用于设置网格线的透明度。透明度的值范围是从 0.0(完全透明)到 1.0(完全不透明)。这里设置为 0.5 意味着网格线具有 50% 的透明度,这种半透明的效果可以避免网格线过于突出而干扰图形中主要数据的展示
plt.grid(True, linestyle="-.",alpha = 0.5)# 2.3 添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11-12点某城市温度变化", fontsize = 20)# 2.4 图像保存 
# 注意:plt.show() 会释放figure资源,如果在显示图像之后保存图片将只能保存空的图片
plt.savefig("./test.png")# 3.图像显示
plt.show()

在这里插入图片描述

2 再一个坐标系中绘制多个图像

import matplotlib.pyplot as plt
import random
# 设置支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号显示问题
plt.rcParams['axes.unicode_minus'] = False# 0.准备数据
x = range(60)
y_shanghai = [random.uniform(15,18) for i in x]
y_beijing = [random.uniform(1,3) for i in x]
# 1.创建画布
plt.figure(figsize=(20,8), dpi = 100)
# 2.绘制图像
plt.plot(x, y_shanghai, color="g", label = "上海") #label是添加图例
plt.plot(x, y_beijing, color="r", linestyle="--",label = "北京")
# 2.1 添加x,y轴刻度
x_ticks_label = ["11点{}分".format(i) for i in x] 
y_ticks = range(40)# 修改x,y轴坐标刻度显示
# plt.xticks(x[::5]) # 从头到尾间隔5个来区分
plt.xticks(x[::5], x_ticks_label[::5]) # 从头到尾间隔5个来区分
# 如果为刻度添加数字,则可以直接添加;但是如果要变成字符串,需要先修改成数字,再用字符串进行替换
plt.yticks(y_ticks[::5])# 2.2添加网格显示
# True:这是 plt.grid() 函数的第一个参数,用于控制是否显示网格线。当传入 True 时,表示要在图形中显示网格线;如果传入 False,则不会显示网格线。
# linestyle="--":该参数用于设置网格线的样式。linestyle 也可以简写成 ls。"--" 表示网格线将以虚线的形式显示。除了 "--" 之外,matplotlib 还支持其他常见的线条样式,例如:
# "-":实线(默认值)
# ":":点线
# "-.":点划线
# alpha = 0.5:alpha 参数用于设置网格线的透明度。透明度的值范围是从 0.0(完全透明)到 1.0(完全不透明)。这里设置为 0.5 意味着网格线具有 50% 的透明度,这种半透明的效果可以避免网格线过于突出而干扰图形中主要数据的展示
plt.grid(True, linestyle="-.",alpha = 0.5)# 2.3 添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11-12点某城市温度变化", fontsize = 20)# 2.4 图像保存 
# 注意:plt.show() 会释放figure资源,如果在显示图像之后保存图片将只能保存空的图片
plt.savefig("./test.png")# 2.5 显示图例
#它的作用是让 matplotlib 自动选择一个最佳的位置来放置图例,使得图例不会与图形中的数据发生重叠
plt.legend(loc="best")# 3.图像显示
plt.show()

在这里插入图片描述

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

import matplotlib.pyplot as plt
import random
# 设置支持中文的字体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号显示问题
plt.rcParams['axes.unicode_minus'] = False# 0.准备数据
x = range(60)
y_shanghai = [random.uniform(15,18) for i in x]
y_beijing = [random.uniform(1,3) for i in x]# 1.创建画布
#plt.figure(figsize=(20,8), dpi = 100)
fig, axes = plt.subplots(nrows = 1, ncols = 2, figsize=(20,8), dpi = 100)# 2.绘制图像
# plt.plot(x, y_shanghai, color="g", label = "上海") #label是添加图例
# plt.plot(x, y_beijing, color="r", linestyle="--",label = "北京")
axes[0].plot(x, y_shanghai, color="g", label = "上海") #label是添加图例
axes[1].plot(x, y_beijing, color="r", linestyle="--",label = "北京")# 2.1 添加x,y轴刻度
x_ticks_label = ["11点{}分".format(i) for i in x] 
y_ticks = range(40)# 修改x,y轴坐标刻度显示
# plt.xticks(x[::5]) # 从头到尾间隔5个来区分
# 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添加网格显示
# # True:这是 plt.grid() 函数的第一个参数,用于控制是否显示网格线。当传入 True 时,表示要在图形中显示网格线;如果传入 False,则不会显示网格线。
# # linestyle="--":该参数用于设置网格线的样式。linestyle 也可以简写成 ls。"--" 表示网格线将以虚线的形式显示。除了 "--" 之外,matplotlib 还支持其他常见的线条样式,例如:
# # "-":实线(默认值)
# # ":":点线
# # "-.":点划线
# # alpha = 0.5:alpha 参数用于设置网格线的透明度。透明度的值范围是从 0.0(完全透明)到 1.0(完全不透明)。这里设置为 0.5 意味着网格线具有 50% 的透明度,这种半透明的效果可以避免网格线过于突出而干扰图形中主要数据的展示
# plt.grid(True, linestyle="-.",alpha = 0.5)
axes[0].grid(True, linestyle="--", alpha = 1)
axes[1].grid(True, linestyle="--", alpha = 1)# # 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.show() 会释放figure资源,如果在显示图像之后保存图片将只能保存空的图片
plt.savefig("./test.png")# # 2.5 显示图例
# #它的作用是让 matplotlib 自动选择一个最佳的位置来放置图例,使得图例不会与图形中的数据发生重叠
# plt.legend(loc="best")
axes[0].legend(loc="best")
axes[1].legend(loc="best")# 3.图像显示
plt.show()

在这里插入图片描述

4 折线图的应用场景

import numpy as np
# 0.准备数据
x = np.linspace(-10,10,1000) # 从-10到10准备1000个数
y = np.sin(x)# 1.创建画布
plt.figure(figsize = (20, 8), dpi = 100)# 2.绘制函数图像
plt.plot(x, y)# 2.1 添加网格显示
plt.plot()# 显示图像
plt.show()

在这里插入图片描述

该图像是y = sin(x)

更多相关学习资料请参考https://matplotlib.org/index.html

相关文章:

机器学习--python基础库之Matplotlib (1) 超级详细!!!

机器学习--python基础库Matplotlib 机器学习--python基础库Matplotlib0 介绍1 实现基础绘图-某城市温度变化图1.1绘制基本图像1.2实现一些其他功能 2 再一个坐标系中绘制多个图像3 多个坐标系显示-plt.subplots(面向对象的画图方法)4 折线图的应用场景 机器学习–python基础库M…...

Android 中实现 PDF 预览三种方式

目录 1. 使用第三方库 PdfRenderer(适用于 Android 5.0 及以上) 步骤:2. 使用第三方库 MuPDF步骤:3. 使用第三方库 PdfiumAndroid步骤: 1. 使用第三方库 PdfRenderer(适用于 Android 5.0 及以上&#xff09…...

10. k8s二进制集群之Kube Scheduler部署

在开始之前需要准备什么?创建kube-scheduler证书请求文件【即证书的生成⓵】根据上面证书配置文件生成kube-scheduler证书【即证书的生成⓶】创建与关联kube-scheduler配置文件(为后面生成系统服务做准备)创建kube-scheduler服务配置文件【准备系统服务⓵】创建kube-schedul…...

bat脚本实现自动化漏洞挖掘

bat脚本 BAT脚本是一种批处理文件,可以在Windows操作系统中自动执行一系列命令。它们可以简化许多日常任务,如文件操作、系统配置等。 bat脚本执行命令 echo off#下面写要执行的命令 httpx 自动存活探测 echo off httpx.exe -l url.txt -o 0.txt nuc…...

一文解释nn、nn.Module与nn.functional的用法与区别

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀零基础入门PyTorch框架_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 …...

Unity VideoPlayer播放视屏不清晰的一种情况

VideoPlayer的Rnder Texture可以设置Size,如果你的视屏是1920*1080那么就设置成1920*1080。 如果设置成其他分辨率比如800*600会导致视屏不清晰。...

Docker 数据卷(Volume)详细介绍

Docker 数据卷(Volume)详细介绍 1. 什么是 Docker 数据卷? Docker 数据卷(Volume)是一种用于 持久化数据 和 容器间数据共享 的机制。由于容器的存储是临时的,容器删除后其中的数据会丢失,因此…...

【玩转全栈】--创建一个自己的vue项目

目录 vue介绍 创建vue项目 vue页面介绍 element-plus组件库 启动项目 vue介绍 Vue.js 是一款轻量级、易于上手的前端 JavaScript 框架,旨在简化用户界面的开发。它采用了响应式数据绑定和组件化的设计理念,使得开发者可以通过声明式的方式轻松管理数据和…...

揭秘区块链隐私黑科技:零知识证明如何改变未来

文章目录 1. 引言:什么是零知识证明?2. 零知识证明的核心概念与三大属性2.1 完备性(Completeness)2.2 可靠性(Soundness)2.3 零知识性(Zero-Knowledge) 3. 零知识证明的工作原理4. 零…...

力扣 239.滑动窗口最大值

思路 滑动窗口 遍历 解题思路 基本思路:使用滑动窗口法遍历数组,动态维护当前窗口的最大值。 特殊情况:该方法有一个缺陷,如果出窗口的元素是当前窗口的最大值max时,接下来的窗口中的最大值就无法确定了,所…...

堆的实现——堆的应用(堆排序)

文章目录 1.堆的实现2.堆的应用--堆排序 大家在学堆的时候,需要有二叉树的基础知识,大家可以看我的二叉树文章:二叉树 1.堆的实现 如果有⼀个关键码的集合 K {k0 , k1 , k2 , …,kn−1 } ,把它的所有元素按完全⼆叉树…...

【3】高并发导出场景下,服务器性能瓶颈优化方案-文件压缩

使用EasyExcel导出并压缩文件是一种高效且常见的解决方案,尤其适用于需要处理大量数据的场景。 1. 导出多个Excel文件并压缩成ZIP文件的基本流程 (1)数据准备:从数据库或其他数据源获取需要导出的数据,并将其存储在Ja…...

Ubuntu20.04 本地部署 DeepSeek-R1

一、下载ollama 打开 ollama链接,直接终端运行提供的命令即可。如获取的命令如下: curl -fsSL https://ollama.com/install.sh | sh确保是否安装成功可在终端输入如下命令: ollama -v注意: 如遇到Failed to connect to github.…...

2025年2月6日笔记

第 12 届蓝桥杯 C 青少组中 / 高级组选拔赛( STEMA ) 2020 年 11 月 22 日 真题第一题 解题思路: 第一:因为有整数集合的求和字样(所以用for循环来做) 第二:题中让我们累加1到N,所…...

Linux: 网络基础

1.协议 为什么要有协议:减少通信成本。所有的网络问题,本质是传输距离变长了。 什么是协议:用计算机语言表达的约定。 2.分层 软件设计方面的优势—低耦合。 一般我们的分层依据:功能比较集中,耦合度比较高的模块层…...

CSS 背景与边框:从基础到高级应用

CSS 背景与边框:从基础到高级应用 1. CSS 背景样式1.1 背景颜色示例代码:设置背景颜色 1.2 背景图像示例代码:设置背景图像 1.3 控制背景平铺行为示例代码:控制背景平铺 1.4 调整背景图像大小示例代码:调整背景图像大小…...

GnuTLS: 在 pull 函数中出错。 无法建立 SSL 连接。

提示信息 [root@localhost ~]# wget https://download.docker.com/linux/static/stable/x86_64/docker-27.5.1.tgz --2025-02-06 12:45:34-- https://download.docker.com/linux/static/stable/x86_64/docker-27.5.1.tgz 正在解析主机 download.docker.com (download.docker.…...

ES6 const 使用总结

1. 声明不可变性 1.1 基本类型的不可变性 // 基本类型声明后不能修改 const name John; name Jane; // TypeError: Assignment to constant variableconst age 25; age 26; // TypeError: Assignment to constant variableconst isValid true; isValid false; // Ty…...

大学资产管理系统中的下载功能设计与实现

大学资产管理系统是高校信息化建设的重要组成部分,它负责记录和管理学校内所有固定资产的信息。随着信息技术的发展,下载功能成为提高资产管理效率的关键环节之一。 系统架构的设计是实现下载功能的基础。一个良好的系统架构能够确保数据的高效传输和存储…...

【华为OD机试python】日志采集系统【 E卷 | 2023 Q1 |100分】

目录 题目描述 输入描述 输出描述 示例1 输入输出示例仅供调试,后台判题数据一般不包含示例 说明 示例2 输入输出示例仅供调试,后台判题数据一般不包含示例 说明 解题思路 考点 代码 题目描述 日志采集是运维系统的的核心组件。日志是按行生成,每行记做一条,由采…...

园区网设计与实战

想做一个自己学习的有关的csdn账号,努力奋斗......会更新我计算机网络实验课程的所有内容,还有其他的学习知识^_^,为自己巩固一下所学知识。 我是一个萌新小白,有误地方请大家指正,谢谢^_^ 文章目录 前言 这个实验主…...

DeepSeek-R1 本地电脑部署 Windows系统 【轻松简易】

本文分享在自己的本地电脑部署 DeepSeek,而且轻松简易,快速上手。 这里借助Ollama工具,在Windows系统中进行大模型部署~ 1、安装Ollama 来到官网地址:Download Ollama on macOS 点击“Download for Windows”下载安装包&#x…...

git进阶--5---git reset 和 git revert 的区别与联系

git进阶–5—git reset 和 git revert 的区别与联系 1. 相同点 都是对版本做出一些改变 2. 不同点 git reset 是进行版本回退,根据不同的参数,是定是否复原索引和工作区git revert 是撤销上一次的提交,不会改变过去的历史,安全…...

AI绘画:解锁商业设计新宇宙(6/10)

1.AI 绘画:商业领域的潜力新星 近年来,AI 绘画技术以惊人的速度发展,从最初简单的图像生成,逐渐演变为能够创造出高度逼真、富有创意的艺术作品。随着深度学习算法的不断优化,AI 绘画工具如 Midjourney、Stable Diffu…...

单硬盘槽笔记本更换硬盘

背景 本人的笔记本电脑只有一个硬盘槽,而且没有M.2的硬盘盒,只有一个移动硬盘 旧硬盘:512G 新硬盘:1T 移动硬盘:512G 参考链接:https://www.bilibili.com/video/BV1iP41187SW/?spm_id_from333.1007.t…...

保姆级教程:利用Ollama与Open-WebUI本地部署 DeedSeek-R1大模型

1. 安装Ollama 根据自己的系统下载Ollama,我的是Linux,所以我使用如下命令进行下载安装: curl -fsSL https://ollama.com/install.sh | sh2. 安装Open-WebUI 使用 Docker 的方式部署 open-webui ,使用gpu的话按照如下命令进行 …...

机器学习模型--线性回归、逻辑回归、分类

一、线性回归 级别1:简单一元线性回归(手工实现) import numpy as np import matplotlib.pyplot as plt# 生成数据 X np.array([1, 2, 3, 4, 5]) y np.array([2, 4, 5, 4, 5])# 手动实现梯度下降 def gradient_descent(X, y, lr0.01, epo…...

使用scoop 下载速度慢怎么办

在国内使用 Scoop 下载速度慢是一个常见问题,主要是因为 Scoop 默认的软件源(bucket)和下载服务器通常位于国外。以下是一些提高下载速度的方法: 1. 更换 Scoop 镜像源(Bucket 镜像): 原理&…...

Kafka 可靠性探究—副本刨析

Kafka 的多副本机制提升了数据容灾能力。 副本通常分为数据副本与服务副本。数据副本是指在不同的节点上持久化同一份数据;服务副本指多个节点提供同样的服务,每个节点都有能力接收来自外部的请求并进行相应的处理。 1 副本刨析 1.1 相关概念 AR&…...

openwebui入门

1 简介 ‌Open WebUI‌(网址是openwebui.com)是一个高度可扩展、功能强大且用户友好的自托管Web用户界面,专为完全离线操作设计,编程语言是python。它支持对接Ollama和OpenAI兼容的API的大模型。‌ Open WebUI‌在架构上是一种中…...