Numpy入门[2]——Matplotlib 基础
创始人
2024-03-14 11:00:38
0

Numpy入门[2]——Matplotlib 基础

参考:

https://ailearning.apachecn.org/

Python直接使用plot()函数画图

使用Jupyter进行练习

在使用Numpy之前,需要了解一些画图的基础。

Matplotlib是一个类似Matlab的工具包,主页地址为

http://matplotlib.org

导入 matplotlib 和 numpy:

import numpy as np
import matplotlib.pyplot as plt

plot二维图

plot(y)
plot(x, y)
plot(x, y, format_string)

只给定 y 值,默认以下标为 x 轴:

# 等距分
x = np.linspace(0, 2*np.pi,50)
plt.plot(np.sin(x))
[]


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8GBhphPF-1669946179150)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_4_1.png)]

给定 x 和 y 值:

plt.plot(x,np.sin(x))
[]

​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vonmLHTi-1669946179152)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_6_1.png)]

多条数据线:

plt.plot(x, np.sin(x), x, np.sin(2*x))
[,]

​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yUWXaRyq-1669946179153)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_8_1.png)]

使用字符串,给定线条参数:
image-20221128154653101

image-20221128154711826

plt.plot(x,np.sin(x),'r-^')
[]

​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ge4jhnKO-1669946179156)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_10_1.png)]

多线条:

plt.plot(x, np.sin(x), "b-o",x, np.sin(2*x),"r-^")
[,]

​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZfzxppL0-1669946179159)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_12_1.png)]

scatter 散点图

scatter(x, y)
scatter(x, y, size)
scatter(x, y, size, color)

画二维散点图

plt.plot(x,np.sin(x),"bo")
[]

​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BYnNX7L1-1669946179160)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_15_1.png)]

可以使用 scatter 达到同样的效果:

plt.scatter(x, np.sin(x))

​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-20UYQcLE-1669946179161)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_17_1.png)]

scatter函数与Matlab的用法相同,还可以指定它的大小,颜色等参数:

from numpy import random
# 产生随机数组
x = random.rand(200)
y = random.rand(200)
size = random.rand(200) * 30
color = random.rand(200)
plt.scatter(x, y, size, color)
# 显示颜色条
plt.colorbar()

​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EOBWPnOa-1669946179161)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_19_1.png)]

多图

使用figure()命令产生新的图像:

t = np.linspace(0, 2 * np.pi, 50)
x = np.sin(t)
y = np.cos(t)
plt.figure()
plt.plot(x)
plt.figure()
plt.plot(y)
[]

​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-giRvyABB-1669946179162)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_21_1.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fpCfz158-1669946179162)(02Matlpotlib%E5%9F%BA%E7%A1%80_files/02Matlpotlib%E5%9F%BA%E7%A1%80_21_2.png)]

或者使用 subplot 在一幅图中画多幅子图:

subplot(row, column, index)
plt.subplot(1,2,1)
plt.plot(x)
plt.subplot(1,2,2)
plt.plot(y)
[]

在这里插入图片描述

标签

可以在 plot 中加入 label ,使用 legend 加上图例:

plt.plot(x, label='sin')
plt.plot(y, label='cos')
plt.legend()


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LblOKyhR-1669946179163)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_25_1.png)]
​

或者直接在 legend中加入:

plt.plot(x)
plt.plot(y)
plt.legend(['sin','cos'])

​![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y1LecGzc-1669946179164)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_27_1.png)]
​](https://img-blog.csdnimg.cn/14fd110533b64ad2b81d8cb882db403a.png)

坐标轴,标题,网格

可以设置坐标轴的标签和标题:

plt.plot(x,np.sin(x))
plt.xlabel("radians")
plt.ylabel("amplitude",fontsize="large")
plt.title('Sin(x)')
# 设置网格
plt.grid()

​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ueZUo7sY-1669946179164)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_30_0.png)]

清除、关闭图像

  • 清除已有图像使用:clf()
  • 关闭当前图像:close()
  • 关闭所有图像:close('all')

从脚本中运行

在脚本中使用 plot 时,通常图像是不会直接显示的,需要增加 show() 选项,只有在遇到 show() 命令之后,图像才会显示。

直方图

从高斯分布随机生成1000个点得到的直方图:

plt.hist(np.random.randn(1000))
(array([  2.,   5.,  33., 147., 266., 298., 171.,  68.,   9.,   1.]),array([-4.06787487, -3.28558599, -2.50329712, -1.72100825, -0.93871938,-0.15643051,  0.62585836,  1.40814724,  2.19043611,  2.97272498,3.75501385]),)

​[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nhQ2tHyV-1669946179165)(https://note-image-1307786938.cos.ap-beijing.myqcloud.com/typora/02Matlpotlib%E5%9F%BA%E7%A1%80_34_1.png)]

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...