机器学习--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

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

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

相关文章

Java 23新特性

文章目录 Java 23新特性一、引言二、Markdown文档注释(JEP 467)示例 三、ZGC:默认的分代模式(JEP 474)1. 为什么要引入分代模式2. 使用分代模式的优势3. 如何启用分代模式 四、隐式声明的类和实例主方法(JE…

【redis】数据类型之string

字符串类型是Redis最基础的数据结构。首先key都是字符串类型,而且其他几种数据结构都是在字符串类型基础上构建的,所以字符串类型能为其他四种数据结构的学习打下基础。 字符串类型的值实际可以是字符串(简单的字符串、复杂的字符串&#xf…

前部分知识复习05

一、多级渐远贴图MipMap 选择贴图,可以勾选贴图的多级渐远效果 [IntRange]_MipMap("MipMap",Range(0,12))0 //多级渐远贴图的LOD调节滑杆 _MipMapTexture("MipMapTexture",2D)"white"{} //定义多级渐远贴图 多级渐远贴图的采样…

[高等数学]曲率

一、知识点 (一)弧微分 设函数 f ( x ) f(x) f(x) 在区间 ( a , b ) (a,b) (a,b) 内具有连续导数。 在曲线 y f ( x ) yf(x) yf(x) 上取固定点 M 0 ( x 0 , y 0 ) M_0(x_0,y_0) M0​(x0​,y0​) 作为度量弧长的基点,并规定依 x x x 增…

openGauss 3.0 数据库在线实训课程2:学习客户端工具gsql的使用

openGauss数据库状态查看 前提 我正在参加21天养成好习惯| 第二届openGauss每日一练活动 课程详见:openGauss 3.0.0数据库在线实训课程 学习目标 学习openGauss数据库客户端工具gsql的使用。 课程作业 gsql是openGauss提供在命令行下运行的数据库连接工具&am…

模拟实现string类

目录 一.构造与析构函数 二.基础小功能的实现 1.clear 2.c_str 3外部对私有的查看 三.实现string的迭代器 四.string的增删查改 1.push_back尾插 1.1reserve扩容 1.2尾插 3.运算符重载 4.insert在任意位置插入 5.erase删除 5.1npos的处理 5.2函数的实现 6.find查…

机器学习之数学基础:线性代数、微积分、概率论 | PyTorch 深度学习实战

前一篇文章,使用线性回归模型逼近目标模型 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 本篇文章内容来自于 强化学习必修课:引领人工智能新时代【梗直哥瞿炜】 线性代数、微积分、概率论 …

记录一下 在Mac下用pyinstallter 打包 Django项目

安装: pip install pyinstaller 在urls.py from SheepMasterOneToOne import settings from django.conf.urls.static import staticurlpatterns [path("admin/", admin.site.urls),path(generate_report/export/, ReportAdmin(models.Report, admin.site).generat…

UE求职Demo开发日志#23 线性任务系统数据层实现

1 按上期设计创建数据结构&#xff08;做了一些修改&#xff09; USTRUCT(BlueprintType) struct ARPG_CPLUS_API FQuestNode {GENERATED_USTRUCT_BODY()// 记录前置节点IDUPROPERTY(EditAnywhere, BlueprintReadWrite,Category"QuestNode")TArray<int> Prede…

mysql8安装时提示-缺少Microsoft Visual C++ 2019 x64 redistributable

MySQL8.0安装包mysql-8.0.1-winx64进行安装&#xff0c;提示&#xff1a;This application requires Visual Studio 2019 x64Redistributable, Please install the Redistributable then runthis installer again。出现这个错误是因为我们电脑缺少Microsoft Visual C 这个程序&…

K8s 分布式存储后端(K8s Distributed Storage Backend)

K8s 分布式存储后端 在 K8s 中实现分布式存储后端对于管理跨集群的持久数据、确保高可用性、可扩展性和可靠性至关重要。在 K8s 环境中&#xff0c;应用程序通常被容器化并跨多个节点部署。虽然 K8s 可以有效处理无状态应用程序&#xff0c;但有状态应用程序需要持久存储来维护…

生产环境超实用shell脚本一

生产环境超实用shell脚本一 Shell脚本作为一种强大的自动化工具&#xff0c;能够帮助运维人员轻松应对各种复杂的任务。 本文将为您介绍服务器健康检查、日志清理、备份以及监控等多个方面&#xff0c;并详细阐述每个脚本的功能和应用场景&#xff0c;助力您提升运维效率&…

IM 即时通讯系统-46-OpenIM 提供了专为开发者设计的开源即时通讯解决方案

IM 开源系列 IM 即时通讯系统-41-开源 野火IM 专注于即时通讯实时音视频技术&#xff0c;提供优质可控的IMRTC能力 IM 即时通讯系统-42-基于netty实现的IM服务端,提供客户端jar包,可集成自己的登录系统 IM 即时通讯系统-43-简单的仿QQ聊天安卓APP IM 即时通讯系统-44-仿QQ即…

spy-debugger + Charles 调试移动端/内嵌小程序H5

简介说明&#xff1a; PC端可以用F12进行console等进行调试&#xff0c;但移动端App中使用webview就无法进行实时调试&#xff0c;针对这种情况 1. 安装 全局安装 spy-debugger sudo npm install spy-debugger -g // window不用加sudo2. spy-debugger 证书 其实spy-debugg…

深度整理总结MySQL——SQL的执行顺序和流程

SQL的执行顺序和流程 SQL的执行顺序执行一条select语句,发生了什么呢连接器查询缓存解析SQL执行SQL预处理器优化器执行器 总结 SQL的执行顺序 这是一条标准的查询语句: 但实际上并不是从上到下去解析的,真实的执行顺序是: 我们先执行from,join来确定表之间的连接关系&#x…

使用 Ollama 在 Windows 环境部署 DeepSeek 大模型实战指南

文章目录 前言Ollama核心特性 实战步骤安装 Ollama验证安装结果部署 DeepSeek 模型拉取模型启动模型 交互体验命令行对话调用 REST API 总结个人简介 前言 近年来&#xff0c;大语言模型&#xff08;LLM&#xff09;的应用逐渐成为技术热点&#xff0c;而 DeepSeek 作为国产开…

Redis有哪些常用应用场景?

大家好&#xff0c;我是锋哥。今天分享关于【Redis有哪些常用应用场景?】面试题。希望对大家有帮助&#xff1b; Redis有哪些常用应用场景? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis 是一个高性能的键值对存储数据库&#xff0c;它有许多应用场景&…

115,【7】 攻防世界 web fileinclude

进入靶场 试着访问了几个文件&#xff0c;都没得到信息&#xff0c;f12看看源码 还真有 <?php // 检查是否开启了错误显示功能 // ini_get 函数用于获取 PHP 配置选项的值&#xff0c;这里检查 display_errors 选项是否开启 if( !ini_get(display_errors) ) {// 如果错误…

SpringBoot开发(五)SpringBoot接收请求参数

1. SpringBoot接收请求参数 1.1. 获取参数的方式 &#xff08;1&#xff09;通过request对象获取参数   &#xff08;2&#xff09;RequestParam(针对请求头方式为x-www-form-ur lencoded)   &#xff08;3&#xff09;RequestBody(针对请求头方式为application/json)   …

如何理解多态,以及由此引出的抽象类和纯虚函数

文章目录 1. 多态2. 抽象类和纯虚函数 1. 多态 静态多态&#xff1a; 动态多态&#xff1a; #include <iostream> #include <string> using namespace std;// 动物的基类 class Animal { public:Animal(string name) : _name(name) {}virtual void bark() {} …