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基础的更多相关文章

  1. 自兴人工智能------------python入门基础(2)列表和元祖

    一.通用序列操作: 列表中所有序列都可以进行特定的操作,包括索引(indexing).分片(slicing).序列相加(adding).乘法,成员资格,长度,最小值,最大值,下面会一一介绍这些操作法. ...

  2. 自兴人工智能-------------Python入门基础(1)

    Python 是一门简单易学且功能强大的编程语言. 它拥有高效的高级数据结构, 并且能够用简单而又高效的方式进行面向对象编程. Python 优雅的语法和动态 类型,再结合它的解释性,使其在大多数平台 ...

  3. Python——matplotlib基础绘图函数示例

    1. 2.饼图 (1) import matplotlib.pyplot as plt labels='frogs','hogs','dogs','logs'% sizes=[15,30,45,10] ...

  4. 2018传智黑马Python人工智能视频教程(基础+就业+面试)

    2018传智黑马Python人工智能视频教程(基础+就业+面试) 2018传智黑马Python人工智能视频教程(基础+就业+面试) 2018传智黑马Python人工智能视频教程(基础+就业+面试) 下 ...

  5. 小白必看Python视频基础教程

    Python的排名从去年开始就借助人工智能持续上升,现在它已经成为了第一名.Python的火热,也带动了工程师们的就业热.可能你也想通过学习加入这个炙手可热的行业,可以看看Python视频基础教程,小 ...

  6. Python数据分析基础教程

    Python数据分析基础教程(第2版)(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1_FsReTBCaL_PzKhM0o6l0g 提取码:nkhw 复制这段内容后 ...

  7. (数据分析)第02章 Python语法基础,IPython和Jupyter Notebooks.md

    第2章 Python语法基础,IPython和Jupyter Notebooks 当我在2011年和2012年写作本书的第一版时,可用的学习Python数据分析的资源很少.这部分上是一个鸡和蛋的问题: ...

  8. Python - matplotlib 数据可视化

    在许多实际问题中,经常要对给出的数据进行可视化,便于观察. 今天专门针对Python中的数据可视化模块--matplotlib这块内容系统的整理,方便查找使用. 本文来自于对<利用python进 ...

  9. python可视化基础

    常用的python可视化工具包是matplotlib,seaborn是在matplotlib基础上做的进一步封装.入坑python可视化,对有些人来说如同望山跑死马,心气上早输了一节.其实学习一门新知 ...

  10. 『Python基础-1 』 编程语言Python的基础背景知识

    #『Python基础-1 』 编程语言Python的基础背景知识 目录: 1.编程语言 1.1 什么是编程语言 1.2 编程语言的种类 1.3 常见的编程语言 1.4 编译型语言和解释型语言的对比 2 ...

随机推荐

  1. muduo源码分析之回调模块

    这次我们主要来说说muduo库中大量使用的回调机制.muduo主要使用的是利用Callback的方式来实现回调,首先我们在自己的EchoServer构造函数中有这样几行代码 EchoServer(Ev ...

  2. C# 随机给一个全部信息都未知的类类型,如何获取该类的类名、属性个数、属性名、属性的数据类型、属性值?

    一.场景假设 假设现在有一个泛型类T的实例对象t,该T类的全部信息都未知. 要求:打印输出实例对象t的类名.属性个数.属性名.属性的数据类型.属性值. 二.解决问题 1.我们根据输出的内容要求定义一个 ...

  3. Azure DevOps (十三) 通过Azure Devops部署一个Go的Web应用

    前几篇文章中,我们分别实现通过azure来部署.NET和Springboot的应用,今天我们来研究一下如何部署一套Go的Web应用上去. 文章配套视频专栏: https://space.bilibil ...

  4. redis & redis sentinel

    Redis 命令参考 Redis Sentinel Cheat Sheet Redis 哨兵节点之间相互自动发现机制(自动重写哨兵节点的配置文件) Redis哨兵模式(sentinel)学习总结及部署 ...

  5. arthas学习图文记录

    Arthas 是阿里开源的 Java 诊断工具.在线排查问题,无需重启:动态跟踪 Java 代码:实时监控 JVM 状态.Arthas 支持 JDK 6+,支持 Linux/Mac/Windows,采 ...

  6. HIVE 数据分析

    题目要求: 具体操作: ①hive路径下建表:sale create table sale (day_id String, sale_nbr String, buy_nbr String, cnt S ...

  7. 以点类 Point 及平面图形类 Plane 为基础设计三角形类 Triangle

    学习内容:以点类 Point 及平面图形类 Plane 为基础设计三角形类 Triangle 代码示例: import java.util.Scanner; class Point{ private ...

  8. Spring大事务到底如何优化?

    所谓的大事务就是耗时比较长的事务. Spring有两种方式实现事务,分别是编程式和声明式两种. 不手动开启事务,mysql 默认自动提交事务,一条语句执行完自动提交. 一.大事务产生的原因 操作的数据 ...

  9. Primal_Dual 原始对偶

    不是费用流都需要用 SPFA 吗. 众所周知,SPFA 去世了,然后网络流显然有负边.于是我们可以像 Johnson 全源最短路一样,给边加上势能,具体实现看我之前的 博客 啦. 然后对于每一次跑 D ...

  10. 网易数帆 Envoy Gateway 实践之旅:坚守 6 年,峥嵘渐显

    服务网格成熟度不断提升,云原生环境下流量处理愈发重要, Envoy Gateway 项目于近日宣布开源,"旨在大幅降低将 Envoy 作为 API 网关的使用门槛",引发了业界关注 ...