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. call()、apply()、arguments

    一.call(),apply() 1.作为函数对象(指函数方法名,不带括号)的方法,需要通过函数对象调用:当对函数调用这两个方法时都会调用函数执行. <script> // 这个函数中,f ...

  2. 评价管理后台PC端

    1.css动画效果    --2020.12.26 2.remove() --2020.12.28 3.执行顺序 --2020.12.30 4.联动 --2021.01.06 5.奥利给~ --202 ...

  3. [源码解析] TensorFlow 分布式之 ParameterServerStrategy V2

    [源码解析] TensorFlow 分布式之 ParameterServerStrategy V2 目录 [源码解析] TensorFlow 分布式之 ParameterServerStrategy ...

  4. Vue中mixins、extends、extend和components的作用和区别

    关于mixins:官方文档: https://cn.vuejs.org/v2/guide/mixins.html 一.components Vue.component是用来注册或获取全局组件的方法,其 ...

  5. 个人NuGet服务搭建,BaGet保姆及部署教程

    前言 应该或许大概每个公司都会有自己的NuGet包仓库吧. 不会吧!不会吧!不会吧!不会还没有自己的仓NuGet仓库吧! 开个玩笑,虽然我觉得有没有无所谓,但是为了这篇博客它必须有所谓. 在工具的选择 ...

  6. 「Java分享客栈」随时用随时翻:微服务链路追踪之zipkin搭建

    前言 微服务治理方案中,链路追踪是必修课,SpringCloud的组件其实使用很简单,生产环境中真正令人头疼的往往是软件维护,接口在微服务间的调用究竟哪个环节出现了问题,哪个环节耗时较长,这都是项目上 ...

  7. 一文看懂 ZooKeeper ,面试再也不用背八股(文末送PDF)

    ZooKeeper知识点总结 一.ZooKeeper 的工作机制 二.ZooKeeper 中的 ZAB 协议 三.数据模型与监听器 四.ZooKeeper 的选举机制和流程 本文将以如下内容为主线讲解 ...

  8. Seata源码分析(一). AT模式底层实现

    目录 GlobalTransactionScanner 继承AbstractAutoProxyCreator 实现InitializingBean接口 写在最后 以AT为例,我们使用Seata时只需要 ...

  9. 20212115 实验二 《python程序设计》实验报告

    实验二 计算器设计 #20212115 2021-2022-2 <python程序设计> 实验报告二 课程: 课程:<Python程序设计>班级: 2121姓名: 朱时鸿学号: ...

  10. MySQL数据库5

    内容概要 pyhton操作MySQL SQL注入问题 修改表SQL语句补充 视图.触发器.储存过程 事务 流程控制 函数 索引与慢查询优化 内容详情 pyhton操作MySQL python中支持操作 ...