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. C#/VB.NET 在Excel单元格中应用多种字体格式

    在Excel中,可对单元格中的字符串设置多种不同样式,通常只需要获取到单元格直接设置样式即可,该方法设置的样式会应用于该单元格中的所有字符.如果需要对单元格中某些字符设置样式,则可以参考本文中的方法. ...

  2. 接口测试使用Python装饰器

    写接口case时,有时需要对cae做一些共性的操作,最典型的场景如:获取case执行时间.打印log等. 有没有一种办法来集中处理共性操作从而避免在每个case中都写相同的代码(如:每个case都需要 ...

  3. Packed Ciphertexts in LWE-based Homomorphic Encryption:解读

    本节内容记录阅读该论文的笔记 介绍 首先,介绍了两种明文"打包"的方法:PVW和SV PVW:对应论文(PVW:A framework for efficient and comp ...

  4. c# SendInput模拟输入字符和按键

    介绍: 该程序本意是为了在彩六里打中文用的,现整理出来供大家复制粘贴.(源程序已开源至GitHub - 彩六中文输入) 主要使用SendInput函数,与c语言中用法一致.(部分代码来自网络) 命名空 ...

  5. linux下三种服务开机自启的方式

    方式一.二.三适用于ubuntu,centos推荐使用方式二.方式三 方式一 在ubuntu系统中,如果你使用的apt方式安装的软件,可以使用如下方式直接添加服务的开机自启, 如果你是手动解压缩官网下 ...

  6. 151-模型-Power BI&Power Pivot模型DAX函数使用量分析

    151-模型-Power BI&Power Pivot模型DAX函数使用量分析 1.背景 我们在 Power BI 或者 Power Pivot 项目中会写很多的 DAX 表达式.在最后项目交 ...

  7. boost::bind 不能处理函数重载 (error: no matching function for call to 'bind')

    前言 最近任务多.工期紧,没有时间更新博客,就水一期吧.虽然是水,也不能太失水准,刚好最近工作中遇到一个 boost::bind 的问题,花费了半天时间来定位解决,就说说它吧. 问题背景 项目中使用了 ...

  8. SQL数据库操作总结

    1. 如何增加(创建)数据库 语法 CREATE DATABASE database_name 2.如何增加(创建)数据表 语法 CREATE TABLE table_name { column_na ...

  9. Kafka 负载均衡在 vivo 的落地实践

    ​vivo 互联网服务器团队-You Shuo 副本迁移是Kafka最高频的操作,对于一个拥有几十万个副本的集群,通过人工去完成副本迁移是一件很困难的事情.Cruise Control作为Kafka的 ...

  10. flink窗口分类

    窗口分类 按照驱动类型分类 窗口本身是截取有界数据的一种方式,所以窗口一个非常重要的信息就是"怎样截取数据".换句话说,就是以什么标准来开发和结束数据的截取. 按照驱动类型分类主要 ...