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

news2024/11/25 14:46:49

机器学习(科学计算库)完整教程(附代码资料)主要内容讲述:机器学习(常用科学计算库的使用)基础定位、目标,机器学习概述定位,目标,学习目标,学习目标,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_xticks
    set_yticks
    set_xlabel
    set_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.coloradmin.cn/o/1582880.html

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

相关文章

AI实时换天解决方案:重塑汽车与旅行拍摄新视界

在汽车拍摄与旅行摄影领域,天空作为画面中的重要元素,往往决定着整体视觉效果的成败。美摄科技作为业界领先的AI视觉技术提供商,近日推出了全新的AI实时换天解决方案,为用户带来了前所未有的创意空间与效率提升。 传统的换天技术…

【简单讲解下WebView的使用与后退键处理】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

分布式文件系统——MinIo

1. 文件系统和分布式文件系统 1.1 文件系统 文件系统是负责管理和存储文件的系统软件,操作系统通过文件系统提供的接口去存取文件,用户通过操作系统访问磁盘上的文件。 1.2 分布式文件系统 一个计算机无法存储海量的文件,通过网络将若干计算…

Xshell连接CentOS7教程

一、在CentOS7中单击右键,打开命令行终端: 二、输入ifconfig命令之后,找到CentOS的ip地址: 三、打开Xshell,命令行中输入 “ssh 用户名上述查到的ip地址 ”,之后输入密码即可连接成功: 四、测试…

【鸿蒙开发】组件状态管理@Prop,@Link,@Provide,@Consume,@Observed,@ObjectLink

1. Prop 父子单向同步 概述 Prop装饰的变量和父组件建立单向的同步关系: Prop变量允许在本地修改,但修改后的变化不会同步回父组件。当父组件中的数据源更改时,与之相关的Prop装饰的变量都会自动更新。如果子组件已经在本地修改了Prop装饰…

嵌入式开发绝招:状态机+事件驱动框架

生活中有很多事件驱动的例子,上自习瞒着老师偷睡觉就是很生动的一个。在开始前我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无…

第十四届蓝桥杯C/C++大学B组题解(二)

6、岛屿个数 #include <bits/stdc.h> using namespace std; const int M51; int T,m,n; int vis[M][M],used[M][M]; int dx[]{1,-1,0,0,1,1,-1,-1}; int dy[]{0,0,1,-1,1,-1,1,-1}; string mp[M]; struct node{//记录一点坐标 int x,y; }; void bfs_col(int x,int y){ qu…

基于BP神经网络的时间序列预测模型matlab代码

整理了基于BP神经网络的时间序列预测模型matlab代码&#xff0c;包含数据集。采用了四个评价指标R2、MAE、MBE、MAPE对模型的进行评价。BP模型在数据集上表现优异。 代码获取链接&#xff1a;基于BP神经网络的时间序列预测模型matlab代码 训练效果&#xff1a; 训练集数据的R…

(学习日记)2024.04.11:UCOSIII第三十九节:软件定时器

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

一体式I/O模块与RS485串口联动,实现工业网络无缝对接

在现代工业自动化领域中&#xff0c;一体化I/O模块和RS485串口的联动应用已经成为实现工业设备高效、稳定通信的关键技术手段之一。这种联动机制能够有效地将各种现场设备的数据实时、准确地传输到上位机系统&#xff0c;从而实现工业网络的无缝对接。 一体化I/O模块&#xff…

HarmonyOS 开发-Grid和List内拖拽交换子组件位置

介绍 本示例分别通过onItemDrop()和onDrop()回调&#xff0c;实现子组件在Grid和List中的子组件位置交换。 效果图预览 使用说明&#xff1a; 拖拽Grid中子组件&#xff0c;到目标Grid子组件位置&#xff0c;进行两者位置互换。拖拽List中子组件&#xff0c;到目标List子组件…

python|sort_values()排序

sort_value()可以用来对值&#xff08;比如说年龄&#xff09;进行排序 根据 ‘Age’ 列进行升序排序&#xff0c;如果 ‘Age’ 相同则根据 ‘Name’ 列进行降序排序 df_sorted_multi df.sort_values(by[Age, Name], ascending[True, False]) print(df_sorted_multi)

拍立淘API助力阿里巴巴1688平台:图片搜索商品更精准,实现个性化推荐新高度

在电子商务的浪潮中&#xff0c;搜索引擎一直扮演着至关重要的角色。然而&#xff0c;随着技术的不断发展和用户需求的多样化&#xff0c;传统的文本搜索方式已逐渐难以满足市场的需要。在此背景下&#xff0c;阿里巴巴1688平台引入拍立淘API&#xff0c;通过图片搜索技术&…

stress-ng ——linux下多功能压测工具,让你的服务器汗流浃背!

关于压力测试&#xff0c;主要就是模拟在 linux 上的高负载情况&#xff0c;包括 cpu、内存、磁盘、网络等&#xff0c;在这种情况下来观察高负载情况下的系统表现&#xff0c; 简单的压测&#xff0c;可以写一些计算的脚本&#xff0c;来让 cpu 和内存维持高使用率&#xff0c…

羊大师家长如何有效应对孩子游戏成瘾与未授权充值问题

在数字时代&#xff0c;青少年沉迷于网络游戏已成为家庭教育中的一大挑战。近期&#xff0c;一位父亲因未能有效监管孩子使用手机玩游戏和偷偷充值而给自己扇了十个耳光的事件在社会上引发了广泛讨论&#xff0c;凸显了青少年网络游戏成瘾和家庭教育之间的矛盾。 面对这一问题…

【数据结构与算法】:堆排序和选择排序

1. 堆排序 堆排序是一种比较复杂的排序算法&#xff0c;因为它的流程比较多&#xff0c;理解起来不会像冒泡排序和选择排序那样直观。 1.1 堆的结构 要理解堆排序&#xff0c;首先要理解堆。堆的逻辑结构是一棵完全二叉树&#xff0c;物理结构是一个数组。 (如果不知道什么是…

中间件漏洞攻防学习总结

前言 面试常问的一些中间件&#xff0c;学习总结一下。以下环境分别使用vulhub和vulfocus复现。 Apache apache 文件上传 (CVE-2017-15715) 描述: Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上&#xff0c;由于其跨…

C++ stl容器vector的认识与简单使用

目录 前言&#xff1a; 本篇文档图片引用自&#xff1a;https://cplusplus.com/reference/vector/vector/ 1.vector的结构 2.迭代器类型 3.构造函数 4.迭代器 反向迭代器遍历 const迭代器 5.容量 maxsize shrink_to_fit reverse resize 6.修改 insert和erase 7.…

【随笔】Git 高级篇 -- 相对引用1 main^(十二)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

2023 年网络安全热点技术发展态势

文章目录 前言一、人工智能信息技术迎来井喷式发展期二、零信任网络安全架构即将投入实际部署三、美国全面推动军政业务向云环境迁移四、专用太空软硬件与独立卫星网络并行发展五、量子信息技术与网络安全领域加速融合前言 在 2023 年取得进展的信息技术不在少数。从网络安全的…