【人工智能】【Python】Matplotlib基础
Maplotlib
本文档由萌狼蓝天写于2022年7月24日
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False # 正常显示负号
(一)Matplotlib三层结构
- 容器层
- canvas
- figure
- axes
- 辅助显示层
- 添加x轴、y轴描述,标题等内容
- 图像层
- 绘制什么图像的声明
(二)画布创建、图像绘制、图像显示
# 创建画布
plt.figure()
x = [1,2,3,4,5] # x轴上数据
y = [3,5,8,13,21] # y轴上数据
plt.plot(x,y) # 绘制图像
plt.show() # 显示图像
(三)图像画布设置、图像保存
# 创建画布
plt.figure(figsize=(10,5),dpi=360)
# figsize设置宽高(物理),dpi设置像素(清晰度)。
# 上述语句 返回的是一个fig对象
# 【注意】plt.show() 会释放figure资源,如果在线上图像之后保存图片将只能保存空图片
x = [1,2,3,4,5] # x轴上数据
y = [3,5,8,13,21] # y轴上数据
plt.plot(x,y) # 绘制图像
plt.savefig("auto_create_test01.jpg") # 保存图像
plt.show() # 显示图像
import random
x = range(100)
y_a = [random.uniform(0,30) for i in x]
# 生成数的数量对应x,生成数的值为0-30之间的随机数
print(x)
print("---华丽的分割线---")
print(y_a)
range(0, 100)
---华丽的分割线---
[12.982672509679087, 4.148460810792916, 23.28235249294327, 21.87989699514037, 2.769903367325226, 25.81845792348358, 3.54269402963334, 2.585603726507065, 26.353567263372167, 20.1724515831709, 9.846906537087849, 18.642794021897725, 28.003744340329156, 16.872567782729124, 21.612800689540776, 11.990215915808118, 17.191944072247612, 14.599968428883773, 8.928751599348555, 28.84921690440148, 1.5811419916444414, 28.347437767253062, 4.1844970314337395, 1.4484554776084402, 23.746856993211154, 25.215123023800903, 8.308284357407098, 20.905033782595766, 1.7060361916369626, 25.824999733060757, 25.861418590294413, 18.934895151240344, 29.156472327174725, 19.73204522971468, 27.62189040636267, 4.0745889532346355, 0.8561484814978759, 16.990698526758948, 13.695538355532968, 19.102876219033302, 26.73750193106295, 8.874796595298546, 19.63252230758577, 5.410863374583021, 28.959501437890072, 13.141025987347465, 11.963738613483583, 10.134532811707164, 2.4713136683034986, 26.003968284802426, 14.971877506465844, 14.571620590922555, 29.08039067376321, 2.2940372824311894, 8.146485905161393, 0.7551511667468636, 25.783877538176437, 19.827089802343014, 6.316807614490154, 12.191817760896198, 29.265434441425686, 1.4430630147755286, 27.15559634706954, 25.33537321637355, 14.537826820603485, 14.752792676788385, 1.8704608188174754, 13.895073232049324, 22.79035528366605, 11.12232898307558, 5.16784304566163, 22.837175426537577, 4.0677013250654435, 27.975154486709634, 3.286664382643265, 10.632525108000943, 4.411311190562859, 10.723165062794324, 29.44814886086931, 20.408896064347594, 15.803205938537028, 16.523604028883916, 19.623136101583274, 4.321189078434246, 29.106159249131583, 10.836444462865161, 7.254473087449349, 2.884588234408815, 13.263596148346446, 17.293710076942403, 21.826173895085446, 29.465860746443976, 21.558510008254462, 13.979606990999239, 23.065135048263528, 6.406772645073375, 17.224958179811374, 23.067953124213787, 29.055332612173245, 0.046758792875690736]
plt.figure(figsize=(10,5),dpi=300)# 创建画布
plt.plot(x,y_a) # 绘画
plt.show() # 显示
(四)自定义x、y轴的刻度
- plt.xticks(x,**kwargs) # x 表示要刻度的值
- plt.yticks(y,**kwargs) # y 表示要刻度的值
x = range(100)
y_a = [random.uniform(0,50) for i in x]
plt.figure(figsize=(25,5),dpi=300)# 创建画布
plt.plot(x,y_a) # 绘画
# 构造x轴刻度标签
x_ticks_label = ["零点{}分".format(i) for i in x]
# 构造y轴刻度
y_ticks = range(60)
# 修改x、y轴刻度显示
plt.xticks(x[::5],x_ticks_label[::5])
plt.yticks(y_ticks[::5])
# ::5 意味着 从头到尾 每间隔5取
#【注意】第一个参数必须是数字,如果不是数字需要进行值的替换
plt.show()
(五)添加网格显示
x = range(100)
y_a = [random.uniform(0,50) for i in x]
plt.figure(figsize=(25,5),dpi=300)# 创建画布
plt.plot(x,y_a) # 绘画
# 构造x轴刻度标签
x_ticks_label = ["零点{}分".format(i) for i in x]
# 构造y轴刻度
y_ticks = range(60)
# 修改x、y轴刻度显示
plt.xticks(x[::5],x_ticks_label[::5])
plt.yticks(y_ticks[::5])
# ::5 意味着 从头到尾 每间隔5取
#【注意】第一个参数必须是数字,如果不是数字需要进行值的替换
plt.grid(True,linestyle="--",alpha=0.5) # 添加网格
# 第一个参数(boolean) 是否添加
# 第二个参数(linestyle) 曲线还是直线
# 第三个参数 (alpha)透明度
plt.show()
(六)添加描述信息、一图多线、显示图例
x = range(50)
y_a = [random.uniform(0,50) for i in x]
y_b = [random.uniform(0,50) for i in x]
plt.figure(figsize=(10,5),dpi=300)# 创建画布
plt.plot(x,y_a) # 绘画
plt.plot(x,y_b) # 绘画
x_ticks_label = ["零点{}分".format(i) for i in x]
y_ticks = range(60)
plt.xticks(x[::5],x_ticks_label[::5])
plt.yticks(y_ticks[::5])
plt.grid(True,linestyle="--",alpha=0.5) # 添加网格
# 添加描述
plt.title("Just Play",fontsize=24)
plt.xlabel("时间")
plt.ylabel("温度")
# 显示图例
plt.plot(x,y_a,color="r",linestyle="-",label="A") # 绘画
plt.plot(x,y_b,color="b",linestyle="--",label="B") # 绘画
plt.legend(loc="upper right")# 显示图例必须在绘制时设置好
plt.show()
图例图形风格设置参考表
颜色字符 | 对应颜色 |
---|---|
r | 红色 |
g | 绿色 |
b | 蓝色 |
w | 白色 |
c | 青色 |
m | 洋红色 |
y | 黄色 |
k | 黑色 |
风格字符 | 对应风格 |
---|---|
- | 实线 |
-- | 虚线 |
-. | 点划线 |
: | 点虚线 |
'' | 留空、空格 |
(七)多坐标系绘制
x = range(50)
y_a = [random.uniform(0,50) for i in x]
y_b = [random.uniform(0,50) for i in x]
# plt.figure(figsize=(10,5),dpi=300)# 创建画布
fig,axes = plt.subplots(nrows=1,ncols=2,figsize=(20,5),dpi=300)
x_ticks_label = ["零点{}分".format(i) for i in x]
y_ticks = range(60)
# 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[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_label[::5])
# 添加描述
# plt.title("Just Play",fontsize=24)
axes[0].set_title("Just Play A",fontsize=24)
axes[1].set_title("Just Play B",fontsize=24)
# plt.xlabel("时间")
# plt.ylabel("温度")
axes[0].set_ylabel("摄氏度")
axes[1].set_ylabel("华氏度")
axes[0].set_xlabel("21日数据")
axes[1].set_xlabel("22日数据")
# 显示图例
# plt.plot(x,y_a,color="r",linestyle="-",label="A") # 绘画
# plt.plot(x,y_b,color="b",linestyle="--",label="B") # 绘画
axes[0].plot(x,y_a,color="r",linestyle="-",label="A")
axes[1].plot(x,y_b,color="b",linestyle="--",label="B")
# plt.legend(loc="upper right")# 显示图例必须在绘制时设置好
axes[0].legend(loc="upper right")# 显示图例必须在绘制时设置好
axes[1].legend(loc="upper right")# 显示图例必须在绘制时设置好
# 添加网格
# plt.grid(True,linestyle="--",alpha=0.5) # 添加网格
axes[0].grid(True,linestyle="--",alpha=0.5)
axes[1].grid(True,linestyle="-.",alpha=1)
plt.show()
(八)常见图形绘制
1.绘制数学函数图像
import numpy as np
# 准备数据
x = np.linspace(-10,10,1000) # 从-10到10 生成1000个数据(数据越多,线条越顺畅自然)
y = np.sin(x)
# 创建画布
plt.figure(figsize=(5,2.5),dpi=300)
# 绘制函数图像
plt.plot(x,y)
# 添加网格显示
plt.grid()
# 显示图像
plt.show()
2.散点图
# 数据准备
import random
x = range(30)
y = [random.uniform(30,60) for i in x]
# 创建画布
plt.figure(figsize=(10,5),dpi=300)
# 图像绘制
plt.scatter(x,y)
# 图像显示
plt.show()
3.柱状图
data_name = ['我是路人甲','山哥之王','山鸡之王','山崖传说','神秘姥爷','嘎腰子传说','嘤呜','我直呼好家伙',"乌拉","一拳一个"]
data_love = [1684,8664,8469,6468,5381,6584,1466,6458,4476,6584]
x = range(len(data_name))
y = data_love
plt.figure(figsize=(15,3),dpi=100)
plt.bar(x,y,width=0.5,color=["r","g","b","m","y","c","k"],align="center") # 对齐方式有edge和center两种
plt.xticks(x,data_name,fontsize=12)
plt.show()
4.直方图
x = np.random.normal(50,10,1000) # (均值,标准差,个数)
y = range(50)
plt.figure(figsize=(15,3),dpi=100)
plt.hist(x,bins=50,density=True, color='g', alpha=1)
plt.show()
5.饼状图
x = [random.randint(0,10) for i in range(5)] # 随机生成5个数,每个数的值在0-9之间
plt.figure(figsize=(15,3),dpi=100)
plt.pie(x) # x:数量,会根据数量自动计算百分比 labels:每部分的名城 autopct:占比显示指定 %1.2f%% colors:每部分的颜色
plt.show()
【人工智能】【Python】Matplotlib基础的更多相关文章
- 自兴人工智能------------python入门基础(2)列表和元祖
一.通用序列操作: 列表中所有序列都可以进行特定的操作,包括索引(indexing).分片(slicing).序列相加(adding).乘法,成员资格,长度,最小值,最大值,下面会一一介绍这些操作法. ...
- 自兴人工智能-------------Python入门基础(1)
Python 是一门简单易学且功能强大的编程语言. 它拥有高效的高级数据结构, 并且能够用简单而又高效的方式进行面向对象编程. Python 优雅的语法和动态 类型,再结合它的解释性,使其在大多数平台 ...
- Python——matplotlib基础绘图函数示例
1. 2.饼图 (1) import matplotlib.pyplot as plt labels='frogs','hogs','dogs','logs'% sizes=[15,30,45,10] ...
- 2018传智黑马Python人工智能视频教程(基础+就业+面试)
2018传智黑马Python人工智能视频教程(基础+就业+面试) 2018传智黑马Python人工智能视频教程(基础+就业+面试) 2018传智黑马Python人工智能视频教程(基础+就业+面试) 下 ...
- 小白必看Python视频基础教程
Python的排名从去年开始就借助人工智能持续上升,现在它已经成为了第一名.Python的火热,也带动了工程师们的就业热.可能你也想通过学习加入这个炙手可热的行业,可以看看Python视频基础教程,小 ...
- Python数据分析基础教程
Python数据分析基础教程(第2版)(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1_FsReTBCaL_PzKhM0o6l0g 提取码:nkhw 复制这段内容后 ...
- (数据分析)第02章 Python语法基础,IPython和Jupyter Notebooks.md
第2章 Python语法基础,IPython和Jupyter Notebooks 当我在2011年和2012年写作本书的第一版时,可用的学习Python数据分析的资源很少.这部分上是一个鸡和蛋的问题: ...
- Python - matplotlib 数据可视化
在许多实际问题中,经常要对给出的数据进行可视化,便于观察. 今天专门针对Python中的数据可视化模块--matplotlib这块内容系统的整理,方便查找使用. 本文来自于对<利用python进 ...
- python可视化基础
常用的python可视化工具包是matplotlib,seaborn是在matplotlib基础上做的进一步封装.入坑python可视化,对有些人来说如同望山跑死马,心气上早输了一节.其实学习一门新知 ...
- 『Python基础-1 』 编程语言Python的基础背景知识
#『Python基础-1 』 编程语言Python的基础背景知识 目录: 1.编程语言 1.1 什么是编程语言 1.2 编程语言的种类 1.3 常见的编程语言 1.4 编译型语言和解释型语言的对比 2 ...
随机推荐
- CentOS 7 执行 yum 命令失败问题的排查方法
一个执着于技术的公众号 简介 本文主要为大家讲解 CentOS 7系统中执行yum命令失败等常见问题的排查方法. 1.执行yum命令报404错误 1)检查yum仓库是否配置正确,可以到阿里云下载rep ...
- django-rest-framework 基础三 认证、权限和频率
django-rest-framework 基础三 认证.权限和频率 目录 django-rest-framework 基础三 认证.权限和频率 1. 认证 1.1 登录接口 1.2 认证 2. 权限 ...
- 并发编程系列之Lock锁可重入性与公平性
一.相似之处:Lock锁 vs Synchronized 代码块 Lock锁是一种类似于synchronized 同步代码块的线程同步机制.从Java 5开始java.util.concurrent. ...
- 【java并发编程】Lock & Condition 协调同步生产消费
一.协调生产/消费的需求 本文内容主要想向大家介绍一下Lock结合Condition的使用方法,为了更好的理解Lock锁与Condition锁信号,我们来手写一个ArrayBlockingQueue. ...
- WPF全局异常处理
private void RegisterEvents() { //Task线程内未捕获异常处理事件 TaskScheduler.UnobservedTaskException += TaskSche ...
- UML类图六种关系的总结
在UML类图中,常见的有以下几种关系: 泛化(Generalization):继承的关系,实线带三角形箭头,指向父类. 实现(Realization):实现的关系,虚线带三角形箭头,指向接口. 关联( ...
- 为什么Java有了synchronized之后还造了Lock锁这个轮子?
众所周知,synchronized和Lock锁是java并发变成中两大利器,可以用来解决线程安全的问题.但是为什么Java有了synchronized之后还是提供了Lock接口这个api,难道仅仅只是 ...
- 基于.NetCore开发博客项目 StarBlog - (10) 图片瀑布流
系列文章 基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客? 基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目 基于.NetC ...
- SpringBoot Restful 接口实现
目录 SpringBoot 核心注解 SpringBoot Restful 接口实现 封装响应数据 SpringBoot 核心注解 SpringBoot 基础入门 注解 说明 Component 声明 ...
- 《Unix 网络编程》15:Unix 域协议
Unix 域协议 ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ 本 ...