【机器学习】科学库使用第4篇:Matplotlib,学习目标【附代码文档】

机器学习(科学计算库)完整教程(附代码资料)主要内容讲述:机器学习(常用科学计算库的使用)基础定位、目标,机器学习概述定位,目标,学习目标,学习目标,1 人工智能应用场景,2 人工智能小案例。机器学习概述,1.5 机器学习算法分类学习目标,学习目标,1 监督学习,2 无监督学习,3 半监督学习,4 强化学习。机器学习概述,1.7 Azure机器学习模型搭建实验学习目标,学习目标,Azure平台简介,学习目标,1 深度学习 —— 神经网络简介,2 深度学习各层负责内容。Matplotlib,3.2 基础绘图功能 — 以折线图为例学习目标,学习目标,1 完善原始折线图 — 给图形添加辅助功能,2 在一个坐标系中绘制多个图像,3 多个坐标系显示— plt.subplots(面向对象的画图方法),4 折线图的应用场景。Matplotlib,3.3 常见图形绘制学习目标,学习目标,1 常见图形种类及意义,2 散点图绘制,3 柱状图绘制,4 小结。Numpy,4.2 N维数组-ndarray学习目标,学习目标,1 ndarray的属性,2 ndarray的形状,3 ndarray的类型,4 总结。Numpy,4.4 ndarray运算学习目标,学习目标,问题,1 逻辑运算,2 通用判断函数,3 np.where(三元运算符)。Pandas,5.1Pandas介绍学习目标,学习目标,1 Pandas介绍,2 为什么使用Pandas,3 小结,学习目标。Pandas,5.3 基本数据操作学习目标,学习目标,1 索引操作,2 赋值操作,3 排序,4 总结。Pandas,5.6 文件读取与存储学习目标,学习目标,1 CSV,2 HDF5,3 JSON,4 小结。Pandas,5.8 高级处理-数据离散化学习目标,学习目标,1 为什么要离散化,2 什么是数据的离散化,3 股票的涨跌幅离散化,4 小结。Pandas,5.12 案例学习目标,学习目标,1 需求,2 实现,1.独立同分布(i.i.d.),2.简单解释 — 独立、同分布、独立同分布。

全套笔记资料代码移步: 前往gitee仓库查看

感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~


全套教程部分目录:


部分文件图片:

Matplotlib

学习目标

  • 应用Matplotlib的基本功能实现图形显示
  • 应用Matplotlib实现多图显示
  • 应用Matplotlib实现不同画图种类

3.2 基础绘图功能 — 以折线图为例

学习目标

  • 目标

  • 掌握给图形添加辅助功能(如:标注、x,y轴名称、标题等)

  • 知道图形的保存

  • 知道如何多次plot绘制图形

  • 知道如何多个坐标系显示图形
  • 知道折线图的应用场景

1 完善原始折线图 — 给图形添加辅助功能

为了更好地理解所有基础绘图功能,我们通过天气温度变化的绘图来融合所有的基础API使用

需求:画出某城市11点到12点1小时内每分钟的温度变化折线图,温度范围在15度~18度

效果:

上海1

1.1 准备数据并画出初始折线图

import matplotlib.pyplot as plt
import random# 画出温度变化图# 0.准备x, y坐标的数据x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]# 1.创建画布plt.figure(figsize=(20, 8), dpi=80)# 2.绘制折线图plt.plot(x, y_shanghai)# 3.显示图像plt.show()

上海2

1.2 添加自定义x,y刻度

  • plt.xticks(x, **kwargs)

x:要显示的刻度值

  • plt.yticks(y, **kwargs)

y:要显示的刻度值

# 增加以下两行代码# 构造x轴刻度标签x_ticks_label = ["11点{}分".format(i) for i in x]# 构造y轴刻度y_ticks = range(40)# 修改x,y轴坐标的刻度显示plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks[::5])

上海3

如果没有解决过中文问题的话,会显示这个样子:

中文问题

1.3 中文显示问题解决

解决方案一:

下载中文字体(黑体,看准系统版本)

  • 步骤一:下载 SimHei 字体(或者其他的支持中文显示的字体也行)

  • 步骤二:安装字体

  • linux下:拷贝字体到 usr/share/fonts 下:

sudo cp ~/SimHei.ttf /usr/share/fonts/SimHei.ttf
  • windows和mac下:双击安装

  • 步骤三:删除~/.matplotlib中的缓存文件

cd ~/.matplotlib
rm -r *
  • 步骤四:修改配置文件matplotlibrc
vi ~/.matplotlib/matplotlibrc

将文件内容修改为:

font.family         : sans-serif
font.sans-serif         : SimHei
axes.unicode_minus  : False

解决方案二:

在Python脚本中动态设置matplotlibrc,这样也可以避免由于更改配置文件而造成的麻烦,具体代码如下:

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

有时候,字体更改后,会导致坐标轴中的部分字符无法正常显示,此时需要更改axes.unicode_minus参数:

# 设置正常显示符号mpl.rcParams["axes.unicode_minus"] = False

1.4 添加网格显示

为了更加清楚地观察图形对应的值

plt.grid(True, linestyle='--', alpha=0.5)

1.5 添加描述信息

添加x轴、y轴描述信息及标题

通过fontsize参数可以修改图像中字体的大小

plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11点0分到12点之间的温度变化图示", fontsize=20)

1.6 图像保存

# 保存图片到指定路径plt.savefig("test.png")
  • 注意:plt.show()会释放figure资源,如果在显示图像之后保存图片将只能保存空图片。

完整代码:

import matplotlib.pyplot as plt
import random
from pylab import mpl# 设置显示中文字体mpl.rcParams["font.sans-serif"] = ["SimHei"]# 设置正常显示符号mpl.rcParams["axes.unicode_minus"] = False# 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,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])# 2.2 添加网格显示plt.grid(True, linestyle="--", alpha=0.5)# 2.3 添加描述信息plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11点--12点某城市温度变化图", fontsize=20)# 2.4 图像保存plt.savefig("./test.png")# 3.图像显示plt.show()

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

2.1 多次plot

需求:再添加一个城市的温度变化

收集到北京当天温度变化情况,温度在1度到3度。怎么去添加另一个在同一坐标系当中的不同图形,其实很简单只需要再次plot即可,但是需要区分线条,如下显示

# 增加北京的温度数据y_beijing = [random.uniform(1, 3) for i in x]# 绘制折线图plt.plot(x, y_shanghai)# 使用多次plot可以画多个折线plt.plot(x, y_beijing, color='r', linestyle='--')

我们仔细观察,用到了两个新的地方,一个是对于不同的折线展示效果,一个是添加图例。

2.2 设置图形风格

颜色字符风格字符
r 红色- 实线
g 绿色- - 虚线
b 蓝色-. 点划线
w 白色: 点虚线
c 青色' ' 留空、空格
m 洋红
y 黄色
k 黑色

2.3 显示图例

  • 注意:如果只在plt.plot()中设置label还不能最终显示出图例,还需要通过plt.legend()将图例显示出来。
# 绘制折线图plt.plot(x, y_shanghai, label="上海")# 使用多次plot可以画多个折线plt.plot(x, y_beijing, color='r', linestyle='--', label="北京")# 显示图例plt.legend(loc="best")
Location StringLocation Code
'best'0
'upper right'1
'upper left'2
'lower left'3
'lower right'4
'right'5
'center left'6
'center right'7
'lower center'8
'upper center'9
'center'10

完整代码:

# 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, label="上海")
plt.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])# 2.2 添加网格显示plt.grid(True, linestyle="--", alpha=0.5)# 2.3 添加描述信息plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11点--12点某城市温度变化图", fontsize=20)# 2.4 图像保存plt.savefig("./test.png")# 2.5 添加图例plt.legend(loc=0)# 3.图像显示plt.show()

2.4 练一练

练习多次plot流程(从上面复制代码,到自己电脑,确保每人环境可以正常运行),

同时明确每个过程执行实现的具体效果

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

如果我们想要将上海和北京的天气图显示在同一个图的不同坐标系当中,效果如下:

image-20190317134820901

可以通过subplots函数实现(旧的版本中有subplot,使用起来不方便),推荐subplots函数

  • matplotlib.pyplot.subplots(nrows=1, ncols=1, **fig_kw) 创建一个带有多个axes(坐标系/绘图区)的图
Parameters:    nrows, ncols : 设置有几行几列坐标系int, optional, default: 1, Number of rows/columns of the subplot grid.Returns:    
fig : 图对象
axes : 返回相应数量的坐标系设置标题等方法不同:set_xticksset_yticksset_xlabelset_ylabel

关于axes子坐标系的更多方法:参考[

  • 注意:plt.函数名()相当于面向过程的画图方法,axes.set_方法名()相当于面向对象的画图方法。
# 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.创建画布# 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, 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()

4 折线图的应用场景

  • 呈现公司产品(不同区域)每天活跃用户数

  • 呈现app每天下载数量

  • 呈现产品新功能上线后,用户点击次数随时间的变化

  • 拓展:画各种数学函数图像

  • 注意:plt.plot()除了可以画折线图,也可以用于画各种数学函数图像

代码:

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

5 小结

  • 添加x,y轴刻度【知道】

  • plt.xticks()

  • plt.yticks()
  • 注意:在传递进去的第一个参数必须是数字,不能是字符串,如果是字符串吗,需要进行替换操作

  • 添加网格显示【知道】

  • plt.grid(linestyle="--", alpha=0.5)

  • 添加描述信息【知道】

  • plt.xlabel()

  • plt.ylabel()
  • plt.title()

  • 图像保存【知道】

  • plt.savefig("路径")

  • 多次plot【了解】

  • 直接进行添加就OK

  • 显示图例【知道】

  • plt.legend(loc="best")

  • 注意:一定要在plt.plot()里面设置一个label,如果不设置,没法显示

  • 多个坐标系显示【了解】

  • plt.subplots(nrows=, ncols=)

  • 折线图的应用【知道】

  • 1.应用于观察数据的变化

  • 2.可是画出一些数学函数图像

未完待续, 同学们请等待下一期

全套笔记资料代码移步: 前往gitee仓库查看

感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~

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

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

相关文章

uniapp小程序编译报错

说明 微信小程序编译每次都出现[ project.config.json 文件内容错误] project.config.json: libVersion 字段需为 string, 解决 找到manifest.json文件 添加:"libVersion": "latest",重新编译即可。

产品推荐 | iWave 的 FPGA-IP 评估附加 FMC 卡

1、产品概述 iWave 的 FPGA-IP 评估附加 FMC 卡旨在满足 ANSI/VITA 57.1 FMC 标准。该卡支持高引脚数 (HPC) 和低引脚数 (LPC) 连接器,可在风冷环境中使用。FPGA-IP评估附加卡可以与市场上的大多数FPGA开发套件连接。…

去中心化社交媒体:分析 Facebook 在区块链平台上的角色

在当今数字时代,社交媒体已经成为人们日常生活中不可或缺的一部分。然而,随着人们对数据隐私和信息控制的关注不断增加,传统的中心化社交媒体平台也面临着越来越多的质疑和挑战。为了应对这些挑战,越来越多的人开始探索去中心化社…

怎样关闭浏览器文件下载安全病毒中检测功能

怎样关闭浏览器文件下载安全病毒中检测功能 有时候需要通过浏览下载一些特殊文件,浏览器会提示有病毒,终止下载并且自动删除文件。 以为是浏览器的问题,用 chrome、Edge、firefox 三种浏览器下载均失败。 尝试关闭了所有浏览器安全防护也不行…

赋能Web3用户:增强在线隐私

随着数字化时代的发展,人们越来越依赖互联网来进行各种活动,从社交互动到金融交易,几乎所有的日常生活都离不开网络。然而,随之而来的是个人隐私安全面临的挑战。在传统的互联网架构下,用户的个人数据往往被中心化的平…

【MIT6.S081】Lab1: Xv6 and Unix utilities(详细解答版)

实验内容网址:https://xv6.dgs.zone/labs/requirements/lab1.html Sleep 关键点:函数参数判断、系统函数调用 思路: 通过argc来判断函数参数是否正确,通过atoi函数来讲字符串转化为整型,调用sleep函数后退出程序。 代…

Vue2和Vue3组件通信:父子与兄弟间的桥梁

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

3D Matching:实现halcon中的find_surface_model

halcon中的三维匹配大致分为两类,一类是基于形状的(Shape-Based),一类是基于表面的(Surface-Based)。基于形状的匹配可用于单个2D图像中定位复杂的3D物体,3D物体模型必须是CAD模型,且几何边缘清晰可见,使用的相机也要预…

性能优化原则

相关链接:【运行环境】加载资源的形式 性能优化 1 性能优化原则 多使用内存、缓存或其他方法 减少CPU计算量,减少网络加载耗时 (适用于所有编程的性能优化----空间换时间) 2 从何入手 性能优化-让加载更快 减少资源体积&#x…

iPad手绘+Ai二合一课程,Procreate+Mj+SD零基础到精通(10节视频课)

课程内容: 1 系统课 AI辅助设计流-从零进阶轻松驾驭AI设计,mp4 2 商务沟通阶段 ChatGPT Midjourney-聊天机器人 项目调研资料收集 ,mp4 3_商务沟通阶段 ChatGPT_Midjourney-Midjourney基础 界面初识初步设置 .mp4 4_商务沟通阶段 ChatGPT_Midjourney-Midjourney…

康谋分享 | aiSim5 物理相机传感器模型验证方法(一)

摘要: aiSim5可以实时模拟复杂的传感器配置,在多GPU分布式渲支持的支持下,aiSim可以渲染20多个摄像头、10多个雷达和10多个激光雷达在同一环境下运行。aiSim5独有的实时渲染引擎能够满足对物理精确环境和天气模拟的所有要求,具有…

【MATLAB源码-第3期】基于MATLAB的256QAM误码率曲线,使用IQ调制解调,以及星座图展示。

1、算法描述 正交幅度调制(QAM,Quadrature Amplitude Modulation)是一种在两个正交载波上进行幅度调制的调制方式。这两个载波通常是相位差为90度(π/2)的正弦波,因此被称作正交载波。这种调制方式因此而得…

虚幻引擎启动报错记录

0x00007FFEF0C8917C (UnrealEditor-CoreUObject.dll)处(位于 UnrealEditor.exe 中)引发的异常: 0xC0000005: 写入位置 0x0000000000000030 时发生访问冲突。 解决办法:首先查看堆栈信息,我的项目启动是因为默认场景编译不过,进到编辑器配置文…

蓝桥杯真题代码记录(直线

目录 1. 题目:2. 我的代码:小结: 1. 题目: 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 在平面直角坐标系中,两点可以确定一条直线。如果有多点在一条直线上&…

新零售SaaS架构:客户管理系统架构设计(万字图文总结)

什么是客户管理系统? 客户管理系统,也称为CRM(Customer Relationship Management),主要目标是建立、发展和维护好客户关系。 CRM系统围绕客户全生命周期的管理,吸引和留存客户,实现缩短销售周…

CentOS上使用cgroup限制进程使用内存

安装cgroup 要使用cgroup首先需要系统支持,需要安装两个rpm包 yum install libcgroup libcgroup-tools 创建限制内存的cgroup组 cgroup组需要在/sys/fs/cgroup/memory目录下创建,我们创建一个限制进程内存大小为10M的cgroup组,这个组中内存…

CUDA 12.4文档2 内核线程架构

本博客参考官方文档进行介绍,全网仅此一家进行中文翻译,走过路过不要错过。 官方网址:https://docs.nvidia.com/cuda/cuda-c-programming-guide/ 本文档分成多个博客进行介绍,在本人专栏中含有所有内容: https://bl…

C++设计模式:单例模式(十)

1、单例设计模式 单例设计模式,使用的频率比较高,整个项目中某个特殊的类对象只能创建一个 并且该类只对外暴露一个public方法用来获得这个对象。 单例设计模式又分懒汉式和饿汉式,同时对于懒汉式在多线程并发的情况下存在线程安全问题 饿汉…

【优选算法专栏】专题十三:队列+宽搜(一)

本专栏内容为:算法学习专栏,分为优选算法专栏,贪心算法专栏,动态规划专栏以及递归,搜索与回溯算法专栏四部分。 通过本专栏的深入学习,你可以了解并掌握算法。 💓博主csdn个人主页:小…

智能边缘自动化:HDMI接口钡铼ARM工业电脑实践案例

一款具备HDMI接口的高性能ARM工业计算机应运而生,为实现在工业4.0时代的关键数据实时处理与可视化管理提供了强有力的硬件支撑。这款计算机依托其独特的边缘计算能力,完美解决了工业环境中大规模数据传输至云端的高延迟问题,成功实现了OT&…