【人工智能】【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 ...
随机推荐
- ShardingSphere 集成 CosId 实战
背景 在软件系统演进过程中,随着业务规模的增长 (TPS/存储容量),我们需要通过集群化部署来分摊计算.存储压力. 应用服务的无状态设计使其具备了伸缩性.在使用 Kubernetes 部署时我们只需要 ...
- 【爬虫+情感判定+Top10高频词+词云图】“谷爱凌”热门弹幕python舆情分析
一.背景介绍 最近几天,谷爱凌在冬奥会赛场上夺得一枚宝贵的金牌,为中国队贡献了自己的荣誉! 针对此热门事件,我用Python的爬虫和情感分析技术,针对小破站的弹幕数据,分析了众网友弹幕的舆论导向,下面 ...
- mybatis plus 使用 SQL 保留字(关键字)
MybatisPlus:使用SQL保留字(关键字)的操作 必须要手动在 entity 的字段上加注解,否则最终会报错,因为 mybatis 或者 mybatis plus 不会自动处理
- 【深入理解计算机系统CSAPP】第六章 存储器层次结构
6 存储器层次结构 存储器系统(memory system)是一个具有不同容量.成本和访问时间的存储设备的层次结构.CPU 寄存器保存着最常用的数据.靠近 CPU 的小的.快速的高速缓存存储器(cac ...
- 29. Divide Two Integers - LeetCode
Question 29. Divide Two Integers Solution 题目大意:给定两个数字,求出它们的商,要求不能使用乘法.除法以及求余操作. 思路:说下用移位实现的方法 7/3=2, ...
- Java高并发-Java内存模型和线程安全
一.原子性 原子性是指一个操作是不可中断的.即使在多个线程一起执行的时候,一个操作一旦开始,就不会被其它线程干扰. i++是原子操作吗? 不是,包含3个操作:读i,i=i+1,写i 32位的机子上读取 ...
- ZIP压缩输入/输出
学习内容: 一.压缩文件 1.利用ZipOutputStream类对象,可将文件压缩. 2.ZipOutputStream类构造方法:ZipOutputStream(OutputStream out) ...
- Vben Admin 源码学习:项目初始化
0x00 前言 Vue-Vben-Admin 是一个免费开源的中后台模版.使用了最新的vue3,vite2,TypeScript等主流技术开发,开箱即用的中后台前端解决方案考. 本系列本着学习参考的目 ...
- 深入C++03:面向对象
面向对象 类和对象.this指针 不用做太多笔记,都可以看初识C++的笔记: 记住:声明后面都要加":",比如声明方法和变量还有class结束的地方:而实现函数出来的地方是不需要加 ...
- CabloyJS自带工作流引擎的文档清单
文档清单 CabloyJS自带工作流引擎文档已经整理出来,欢迎大家围观.拍砖 介绍 介绍 演示:CMS审批工作流 单元测试用例集 流程定义 基本概念 JSON规范 listener规范 listene ...