【机器学习】嘿马机器学习(科学计算库)第4篇:Matplotlib,学习目标【附代码文档】

本教程的知识点为:机器学习(常用科学计算库的使用)基础定位 机器学习概述 机器学习概述 1.5 机器学习算法分类 1 监督学习 机器学习概述 1.7 Azure机器学习模型搭建实验 Azure平台简介 Matplotlib 3.2 基础绘图功能 — 以折线图为例 1 完善原始折线图 — 给图形添加辅助功能 Matplotlib 3.3 常见图形绘制 1 常见图形种类及意义 Numpy 4.2 N维数组-ndarray 1 ndarray的属性 Numpy 4.4 ndarray运算 问题 Pandas 5.1Pandas介绍 1 Pandas介绍 Pandas 5.3 基本数据操作 1 索引操作 Pandas 5.6 文件读取与存储 1 CSV Pandas 5.8 高级处理-数据离散化 1 为什么要离散化 Pandas 5.12 案例 1 需求

仓库里完整资料代码:

博客文章1: https://www.jianshu.com/p/f82881b822e6

感兴趣的小伙伴可以自取哦~


全套教程部分目录:


部分文件图片:

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中的缓存文件```python
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.可是画出一些数学函数图像


喜欢的朋友记得点赞、收藏、关注哦!!!

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

平衡二叉树(递归)

给定一个二叉树,判断它是否是 平衡二叉树.平衡二叉树 是指该树所有节点的左右子树的深度相差不超过 1。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:true示例 2: 输入:root [1,2,2,3,3,null,null,4…

Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)

案例背景 虽然在效果上,传统的逻辑回归模型通常不如现代的机器学习模型,但在风控领域,解释性至关重要。逻辑回归的解释性是这些“黑箱”模型所无法比拟的,因此,研究传统的评分卡模型依然是有意义的。 传统的评分卡模型…

Weblogic漏洞复现(Vulhub)

0x00前言 1.docker 安装 Docker的安装_docker安装-CSDN博客 2.docker的镜像 1.可以在阿里云上的容器服务找到镜像源。 2.也可以使用下面的镜像源,时快时慢不稳定。 {"registry-mirrors":["https://docker.registry.cyou","https://d…

【Python环境配置-Step1】PyCharm 2024最新官网下载、安装教程

背景: 1、 步骤: 1、PyCharm 官网下载地址:https://www.jetbrains.com/pycharm/ 2、查看下图红框选中,下载社区版(免费) 3、(查看下图红框选中)这里选其他版本 4、这里我下载的…

用vite创建项目

一. vite vue2 1. 全局安装 create-vite npm install -g create-vite 2. 创建项目 进入你想要创建项目的文件夹下 打开 CMD 用 JavaScript create-vite my-vue2-project --template vue 若用 TypeScript 则 create-vite my-vue2-project --template vue-ts 这里的 …

FBX福币交易所A股三大指数小幅低开 稀土永磁板块回调

查查配分析11月5日电 周二,A股三大指数小幅低开。沪指开盘跌0.10%报3306.81点,深证成指开盘跌0.09%报10653.20点,创业板指开盘跌0.05%报2184.90点。 FBX福币凭借用户友好的界面和对透明度的承诺,迅速在加密货币市场中崭露头角,成为广大用户信赖的平台。 来源:同花顺iFinD 盘面…

LeetCode总结-链表

一、遍历链表 1290.二进制链表转整数 2058.找出临界点之间的最小和最大距离 2181.合并零之间的节点 二、删除节点 问:为什么没有修改 dummy,但 dummy.next 却是新链表的头节点?如果删除了 head,那么最后返回的是不是原链表的头…

腐蚀图像分割系统:前端交互展示

腐蚀图像分割系统源码&数据集分享 [yolov8-seg-C2f-DySnakeConv&yolov8-seg-LSKNet等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Global Al…

NIM 平台生成式 AI-demo

需要python环境 官网注册:(后续调用模型需要秘钥key)Try NVIDIA NIM APIs 可以看到有多种模型: 官方案例 1.安装相关依赖: pip install langchain_nvidia_ai_endpoints langchain-community langchain-text-splitt…

欢迎使用Markdown编辑器

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

智慧医疗:AI如何改变传统医疗服务模式?

内容概要 在如今的医疗界,智慧医疗正如一阵旋风,呼啸而来,打破了传统的模式。这一变革的核心,毫无疑问是人工智能。想象一下,一个不需要排队候诊、甚至不需要出门的医生——这就是智能助手的非凡魅力!通过…

1.kubernetes作用及组件

容器管理集群名称叫做k8s 容器的编排工具:swarm,kubesphere,open shift,kubernetes【市场占比大】 一.kubernetes介绍 1.kubernetes是什么? 由谷歌公司开源的应用,基于go语言编写 简称k8s 2.kubernet…

【AcWing】算法基础课-动态规划

目录 1、闫式DP分析法 2、背包问题 2.1 01背包问题 朴素版本 优化版本 2.2 完全背包问题 朴素版本 优化版本 2.3 多重背包问题 朴素版本 二进制优化 2.4 分组背包问题 3、线性DP 3.1 数字三角形 3.2 最长上升子序列 3.3 最长公共子序列 4、区间DP 5、数位统计…

白天用的投影仪哪款好?掌握这个亮度参数谁敢忽悠你

人们追求松弛人生的同时,也着眼于高品质的家庭娱乐体验,高端家用投影仪以其大屏幕的视觉冲击力和便捷的移动性,应运成为众多家庭客厅、卧室的新宠。而在挑选家用投影仪时,亮度作为衡量其性能的重要指标之一,直接影响着…

七牛云OSS的使用

图片上传 一、七牛云oss介绍 1.1 图片存储介绍 在实际开发中,我们会有很多处理不同功能的服务器。例如: 应用服务器:负责部署我们的应用 数据库服务器:运行我们的数据库 文件服务器:负责存储用户上传文件的服务器…

重新构想定性数据分析:使用 NVivo 15 实现 AI、反思和备忘录

NVivo 是研究出版物中引用最多的定性数据分析软件 (QDA 软件),使用 NVivo v15 最新主要版本从定性和混合方法数据中发现更多信息,融合 Lumivero AI Assistant 更快地识别主题、运行高级查询和发现基于证据的见解,让您在更短的时间内获得严谨的研究结果。…

C++【string的模拟实现】

在前文我们讲解了string类接口使用(C【string类的使用】(上),C【string类的使用】(下)),本片文章就来模拟实现string类。 注:本文实现的是string的部分重点内容,目的是为了更好的了解string&…

zabbix安装配置与使用

zabbix Zabbix的工作原理如下: 监控部分: Zabbix Agent安装在各个需要监控的主机上,它以主配置的时间间隔(默认60s)收集主机各项指标数据,如CPU占用率、内存使用情况等。 通讯部分: Agent会把收集的数据通过安全通道(默认10051端口)发送到Zabbix Server。Server会存储这些数…

7.3、实验三:RIPv2的基本配置

源文件: 7.3、实验三:RIPv2的基本配置: https://url02.ctfile.com/d/61945102-63684790-45f44b?p2707 (访问密码: 2707) 一、目的 能够使用RIPv2路由协议 二、实验要求 1.要求 使用RIPv2协议,使得PC0 和 Service0能够通信,…

石岩田心村的地面停车点(月卡350)

​我之前一直以为城中村里的地面停车场会比上屋地铁口的联天停车场便宜一些。没想到这个田心村月卡也是350元哈。比对面的园岭村还贵,元岭村月卡我记得才260元。 田心村停车场标识牌 序号 收费项目 收费标准 1 小车临时停放 10元/小时,超过1小时加收…