十一.matplotlib可视化

目录

十一.matplotlib可视化

1 数据可视化

2 应用场景

3 Matplotlib

脚本层

美工层

后端层

3.1 第一个绘图程序

matplotlib常用配置

查看自己电脑上的 字体库

3.2 基本绘图

plt.plot()

3.3 样式和颜色

3.4 画布配置figure

坐标轴及标签

设置图例???

添加注释 plt.annotate (点的坐标)

在一个画布上画多个图

作图完整演示代码

4 多图 布局

子图 subplot()

子图 subplots()

图像嵌套add_subplot()

图像嵌套add_axes()&axes()

5 常用视图

5.1 折线图

单条折线

多条折线

5.2 柱状图

5.3 饼图


十一.matplotlib可视化


1 数据可视化

如果将文本数据与图表数据相比较,人类的思维模式更适合于理解后者,原因在于图表数据更加直观且形象化,它对于人类视觉的冲击更强,这种使用图表来表示数据的方法被叫做 数据可视化。

图表为更好地探索、分析数据提供了一种直观的方法,它对最终分析结果的展示具有重要的作用。

对于组织决策者而言,数据可视化也只是一种辅助工具,从寻找数据间关联到最终做出决定,大致分为以下四步:

  • 可视化(Visualize):使用不同种类的图表对原始数据进行可视化处理,使复杂的数据更容易理解与使用;

  • 分析(Analysis):数据分析的目的是获取有用的信息,这个过程主要涉及对数据的清洗、检查、转换以及对数据的建模;

  • 文档说明(Document insight):文档说明属于整理、汇总阶段,将有用的数据或者信息整理出来;

  • 数据集转换(Transform Data Set):指将数据进行分类、分级、统计记录格式与编码格式等。

2 应用场景

数据可视化主要有以下应用场景:

  • 企业领域:利用直观多样的图表展示数据,从而为企业决策提供支持;

  • 股票走势预测:通过对股票涨跌数据的分析,给股民提供更合理化的建议;

  • 商超产品销售:对客户群体和所购买产品进行数据分析,促使商超制定更好的销售策略;

  • 预测销量:对产品销量的影响因素进行分析,可以预测出产品的销量走势。

其实不管是在日常生活,还是工作中,我们都会根据过往的经验作出某些决定,这种做法也叫做“经验之谈”。

数据分析和其类似,通过对过往数据的大量分析,从而对数据的未来走势做出预测。

3 Matplotlib

Matplotlib 是一款用于数据可视化的 Python 软件包,支持跨平台运行,它能够根据 NumPy ndarray 数组来绘制 2D 图像,它使用简单、代码清晰易懂,深受广大技术爱好者喜爱。

Matplotlib 由三个不同的层次结构组成,分别是脚本层、美工层和后端层。

  • 脚本层

脚本层是 Matplotlib 结构中的最顶层。我们编写的绘图代码大部分代码都在该层运行,它的主要工作是负责生成图形与坐标系。

  • 美工层

美工层是结构中的第二层,它提供了绘制图形的元素时的给各种功能,例如,绘制标题、轴标签、坐标刻度等。

  • 后端层

后端层是 Matplotlib 最底层,它定义了三个基本类,

首先是 FigureCanvas(图层画布类),它提供了绘图所需的画布,

其次是 Renderer(绘图操作类),它提供了在画布上进行绘图的各种方法,

最后是 Event(事件处理类),它提供了用来处理鼠标和键盘事件的方法。

3.1 第一个绘图程序

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

matplotlib常用配置

# 浏览器不显示图片
%matplotlib inline
​
# 图片中文显示
plt.rcParams["font.sans-serif"] = "SimHei"
​
# 图片中显示负号
plt.rcParams["axes.unicode_minus"] = False
​
# 支持svg矢量图
%config InlineBackend.figure_format = "svg"

注意:%matplotlib inline 是 Jupyter 提供的魔法命令,它可以把输出图显示在笔记本内部

查看自己电脑上的 字体库

from matplotlib.font_manager import FontManager
fm = FontManager()
my_font = set(f.name for f in fm.ttflist)
print(my_font)

3.2 基本绘图

plt.plot()

# 生成-5到5,的等差数列,总共50份
x = np.linspace(-5,5,50)
# 绘制抛物线
plt.plot(x**2)

3.3 样式和颜色

符号'-','--','-.',':','.',',',,o,^,v,<,>,s,+,x,D,d,1,2,3,4,h,H,p,| ,_
颜色b(蓝色),g(绿色),r(红色),c(青色),m(品红),y(黄色),k(黑色),w(白色)
# 生成-5到5,的等差数列,总共50份
x = np.linspace(-5,5,50)
​
# color:颜色  ls:样式
# plt.plot(x**2,color="r",ls="--")
plt.plot(x**2,"r--")
plt.plot(x**2-2*x,'b|')
----------------------------
# 标题名称
plt.title("这是一张表")
plt.title('这是标题',fontsize=60)

3.4 画布配置figure

参数说明
figsize指定画布的大小,(宽度,高度),单位为英寸。
dpi指定绘图对象的分辨率,即每英寸多少个像素,默认值为80。
# 画布配置      plt.figure(figsize=(8,8),dpi=120,facecolor='yellow')
​
# figsize:画布大小,宽和高
# dpi:分辨率
# facecolor:背景颜色
-----------------------
x = np.linspace(0, 10)
y = np.sin(x)
plt.plot(x,y)

坐标轴及标签

# 坐标轴及标签
plt.xlim(0,6) #x轴坐标轴
plt.ylim((0, 3))#y轴坐标轴
plt.xlabel('时间')#x轴标签
plt.ylabel('价格')#y轴标签
plt.title("这是一张表")
plt.show()

设置图例???

plt.figure(figsize=(10,5))
x = np.linspace(0,10)
​
plt.plot(x, np.sin(x),"r",label="正弦")
plt.plot(x, np.cos(x),"b",label="余弦")
plt.legend(loc="best")  #图列位置,可选best,center

添加注释 plt.annotate (点的坐标)

x = np.arange(1,11)
y = x*x
#plt.plot(x,y,marker="o",linestyle="")
plt.plot(x,y,marker="o")
​
for xy in zip(x,y):print(xy)
​plt.annotate("(%s,%s)"%xy,xy=xy)
plt.show()

在一个画布上画多个图

plt.figure(figsize=(20,10))
x = np.linspace(0,10)
plt.plot(x, np.sin(x),"r+")
plt.plot(x, np.cos(x),"b+")
plt.plot(x, -np.sin(x),"k--")
plt.plot(x, -np.cos(x),"g--")
​
# 立刻显示图片
plt.show()

作图完整演示代码

#导入模块
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
#基本配置
plt.rcParams["font.sans-serif"] = "SimHei"
plt.rcParams["axes.unicode_minus"] = False
#配置画布大小.
plt.figure(figsize=(10,5))
#配置横纵坐标轴大小及名称&标题
y=np.sin(x)
plt.xlim(0,15)
plt.ylim(-1,3)
plt.xlabel('x',fontsize=20)
plt.ylabel('y',fontsize=20)
plt.title("完整作图",fontsize=30)
#
x = np.linspace(0,10,11)
y = np.sin(x)
#显示点的坐标.
plt.plot(x,x,marker='o',label='一次')
plt.plot(y,'b',label='sin()')   #z这里分的次数很少,所以显示时很像折线.
#显示图例.
plt.legend(loc='best',fontsize=20)
#点:
for x in zip(x,x):# print(x,x)plt.annotate('(%s%s)'%x,x)
plt.show()
​
# plt.plot(x,y,'y',label='e~~')
​
# plt.plot(y,'g',label='sin()')

4 多图 布局

子图 subplot()

fig = plt.figure(figsize=(6,4))
x = np.linspace(1,10,20)
y = np.sin(x)
​
​
ax1 = plt.subplot(2,2,1)# 2行2列中的第一个图
ax1.plot(x,y)
ax1.set_title("子图1")
ax2 = plt.subplot(2,2,2)# 2行2列中的第二个图
ax2.plot(x,y)
ax2.set_title("子图2")
ax3 = plt.subplot(2,2,3)# 2行2列中的第三个图
ax3.plot(x,y)
ax3.set_title("子图3")
ax4 = plt.subplot(2,2,4)# 2行2列中的第四个图
ax4.plot(x,y)
ax4.set_title("子图4")
​
# 自动调整布局
fig.tight_layout()

子图 subplots()

x = np.linspace(1,10,10)
​
fig, ax = plt.subplots(3,3)
ax1,ax2,ax3 = ax
ax11,ax12,ax13 = ax1
ax21,ax22,ax23 = ax2
ax31,ax32,ax33 = ax3
​
fig.set_figwidth(8)   # 设置宽
fig.set_figheight(5)  # 设置高
​
fig.tight_layout()
ax11.plot(x,np.sin(x),color="r")
ax12.plot(x,np.cos(x))
ax13.plot(x,np.tan(x))
​
ax21.plot(x,np.sin(x)+np.cos(x))
ax22.plot(x,np.cos(x)+np.cos(x))
ax23.plot(x,np.tan(x)+np.cos(x))
​
ax31.plot(x,-np.sin(x))
ax32.plot(x,-np.cos(x))
ax33.plot(x,-np.tan(x))

图像嵌套add_subplot()

fig = plt.figure(figsize=(8,5))
​
# 子图一
axes1 = fig.add_subplot(1,1,1)
axes1.plot([0,1],[3,4],marker="o")
​
# 子图二
axes2 = fig.add_subplot(2,2,1)
axes2.plot([0,1],marker="o")

图像嵌套add_axes()&axes()

fig = plt.figure(figsize=(10,6))
​
x = np.linspace(0,10,30)
y = np.sin(x)
plt.plot(x,y)
​
# 嵌套图一
axes1 = plt.axes([0.5,0.5,0.3,0.3])
axes1.plot(x,y,color="g")
​
# 嵌套图二
axes2 = fig.add_axes([0.18,0.18,0.3,0.3])
axes2.plot(x,y,color="r")

5 常用视图

5.1 折线图

单条折线

x = ["Mon", "Tues", "Wed", "Thur", "Fri","Sat","Sun"]
y = np.random.randint(25,55,size=7)
plt.plot(x, y, "g", marker='o', markersize=5, label="周活")
# 绘制坐标轴标签
plt.xlabel("时间")
plt.ylabel("用户活跃度")
plt.title("活跃度")
# 显示图例
plt.legend(loc="best")
# 调用 text()在图像上绘制注释文本
# x1、y1表示文本所处坐标位置,ha参数控制水平对齐方式, va控制垂直对齐方式,str(y1)表示要绘制的文本
for x1, y1 in zip(x, y):plt.text(x1, y1, str(y1), ha='center', va='bottom', fontsize=10)

多条折线

# 对比两天内同一时刻温度的变化情况
x = [5, 8, 12, 14, 16, 18, 20]
y1 = [18, 21, 29, 31, 26, 24, 20]
y2 = [15, 18, 24, 30, 31, 25, 24]
​
plt.plot(x, y1, 'r',marker='o', markersize=5)
plt.plot(x, y2, 'b', marker='o',markersize=5)
plt.title('温度对比折线图')  # 折线图标题
plt.xlabel('时间(h)')  # x轴标题
plt.ylabel('温度(℃)')  # y轴标题
​
# 给图像添加注释,并设置样式
for a, b in zip(x, y1):plt.text(a, b, b, ha='center', va='bottom', fontsize=10)
for a, b in zip(x, y2):plt.text(a, b, b, ha='center', va='bottom', fontsize=10)

5.2 柱状图

  • 柱状图

#准备数据
langs = ['C', 'C++', 'Java', 'Python', 'PHP']
students = [23,17,35,29,12]
#绘制柱状图
​
plt.xlabel("语言")
plt.ylabel("热度")
plt.bar(langs,students)
plt.show()
​

5.3 饼图

sizes = [2,5,12]
labels = ['娱乐','育儿','饮食']
plt.pie(sizes,labels=labels,autopct='%1.1f%%',shadow=False,startangle=100)
plt.show()
​
# labels为饼图加标签
# autopct 控制饼图内百分比设置
# '%1.1f'指小数点前后位数
# shadow是在饼图下画一个阴影,False即不画
​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/764329.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【QT+QGIS跨平台编译】之八十七:【QGIS_Gui跨平台编译】—【qgis_gui.h生成】

文章目录 一、qgis_gui.h介绍二、信息分析三、qgis_gui.h生成一、qgis_gui.h介绍 qgis_gui.h 是 QGIS(Quantum GIS)软件中的一个头文件,主要用于服务于QGIS_GUI库的编译,包含导入、导出宏信息的定义。 二、信息分析 在qgis\src\gui目录,CMakeLists.txt文件记录了相关信息…

python loguru 日志数据代码模块+飞书消息通知

前提&#xff1a; 之前python文件输出日志到文件的时候&#xff0c;使用logging模块&#xff0c;发现特别麻烦&#xff0c;需要文件日期切分&#xff0c;异步打印日志&#xff0c;文件留存时间&#xff0c;这些功能的实现就很麻烦&#xff0c;都需要自己写&#xff0c;之后发现…

Vue3中的reactive与ref

前言&遇到的bug reactive与ref都是Vue3中非常重要的API&#xff0c;众所周知&#xff0c;用这两个API可以创建响应式数据&#xff0c;从而实现Vue的数据驱动视图。 平时用的时候只知道用ref定义基本数据类型&#xff0c;reactive定义引用数据类型。 因为今天发现一个bug…

vue项目的性能优化

结合lighthouse查看各项数据&#xff0c;不断进行性能优化&#xff0c;可以从代码、打包、部署这三个层面来优化 代码层面 1、v-if和v-show区分使用 v-if&#xff08;惰性的&#xff09;用的条件判断&#xff0c;是惰性的&#xff0c;false的话初始不会渲染&#xff0c;适用…

【DevOps云实践】使用Azure Pipeline部署Function App

目录 介绍1 Azure DevOps2 微软Azure3 Azure Pipelines3.1 创建流水线**3.1.2 创建流水线**3.2 创建库3.3 运行流水线当流水线成功验证编译的YAML时,将显示阶段和作业。3.4 流水线审阅3.5 检查函数应用结论推荐超级课程: Docker快速入门到精通Kubernetes入门

32、计算e

作者: Turbo时间限制: 1S章节: 循环 问题描述 : 利用公式e1 1/1! 1/2! 1/3! ... 1/n!&#xff0c;编程计算e的近似值&#xff0c;直到最后一项的绝对值小于threshold&#xff08;该项不包括在结果内&#xff09;&#xff0c;输出e的值并统计累加的项数。 输入说明 : 输…

论文阅读:机器人跑酷学习

项目开源地址&#xff1a;https://github.com/ZiwenZhuang/parkour 摘要&#xff1a; 跑酷对腿部机动性是一项巨大的挑战&#xff0c;要求机器人在复杂环境中快速克服各种障碍。现有方法可以生成多样化但盲目的机动技能&#xff0c;或者是基于视觉但专门化的技能&#xff0c;…

代码随想录笔记|C++数据结构与算法学习笔记-二叉树(一)|二叉树的递归遍历、二叉树的迭代遍历、二叉树的统一迭代法

全文基于代码随想录及相关讲解视频。 文字链接&#xff1a;《代码随想录》 文章目录 二叉树的递归遍历二叉树的前序遍历C代码如下 二叉树的中序遍历二叉树的后序遍历 二叉树的迭代遍历前序遍历前序遍历C代码 右序遍历右序遍历C代码 中序遍历为什么中序遍历不同中序遍历迭代法的…

FEX-Emu在Debian/Ubuntu系统使用

FEX-Emu在Debian/Ubuntu系统使用 1. Debootstrap子系统安装&#xff08;可选&#xff09;2. Debian/Ubuntu依赖包安装3. 获取FEX-Emu源码并编译4. 根文件系统RootFS安装5. 基于 FEX-Emu 运行应用 1. Debootstrap子系统安装&#xff08;可选&#xff09; sudo apt-get install …

软考 系统架构设计师系列知识点之云原生架构设计理论与实践(2)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之云原生架构设计理论与实践&#xff08;1&#xff09; 所属章节&#xff1a; 第14章. 云原生架构设计理论与实践 第1节 云原生架构产生背景 云原生&#xff08;Cloud Native&#xff09;是近几年云计算领域炙手可热的话…

599: 拉丁方阵(python)

收藏 难度&#xff1a;一般 标签&#xff1a;暂无标签 题目描述 还是Archmager的题了&#xff0c;这次就没有那么多废话了&#xff0c;请大家构造 N*N 阶的拉丁方阵(2<N<9)&#xff0c;使方阵中的每一行和每一列中数字1到N只出现一次。如N4时&#xff1a; 1 2 3 4 2 …

蓝桥杯刷题--python-27--全球变暖-dfs-bfs

1.全球变暖 - 蓝桥云课 (lanqiao.cn) import os import sys # 请在此输入您的代码 sys.setrecursionlimit(60000) n int(input()) dao [] for _ in range(n): tmp list(input()) dao.append(tmp) dict [(1, 0), (0, 1), (-1, 0), (0, -1)] used [[0 for _ in range(n)] fo…

如何让电脑定时开机?这个方法你一定要学会

前言 前段时间小白在上班的时候&#xff0c;个人使用一台台式机和一台笔记本电脑。台式机并不是经常使用&#xff0c;但整个公司的数据中心是建立在小白所使用的那台台式机上。 如果台式机没有开机&#xff0c;同事们就没办法访问数据中心获取自己想要的资料。领导也没办法链…

macOS - 创建聚合设备、切换声卡

文章目录 声卡设备 ID 在各个电脑上不一样,但同一个声卡驱动,UID是相同的。 比如 BlackHole 的声卡 UID 为 BlackHolexch_UID,在不同电脑上设备ID 可能为 55,64… 谨慎期间,使用声卡 UID 寻找设备ID,然后再做合并。 #import <CoreAudio/CoreAudio.h> #import <Au…

C#、.NET版本、Visual Studio版本对应关系及Visual Studio老版本离线包下载地址

0、写这篇文章的目的 由于电脑的环境不同&#xff0c;对于一个老电脑找到一个适配的vscode环境十分不易。总结一下C#、.NET、Visual Studio版本的对应关系&#xff0c;及各个版本Visual Studio的下载地址供大家参考 1、C#、.NET版本、Visual Studio版本对应关系如下 2、Visua…

李国武:如何评估一家精益制造咨询公司的实施能力?

在制造业转型升级的大背景下&#xff0c;精益制造已成为企业提升竞争力、实现可持续发展的关键。然而&#xff0c;面对市场上众多的精益制造咨询公司&#xff0c;如何评估其实施能力成为了众多企业的难题。本文将从多个方面为大家揭示评估精益制造咨询公司实施能力的方法&#…

稀碎从零算法笔记Day25-LeetCode:数组中的第K个最大元素

题型&#xff1a;排序、堆 链接&#xff1a;215. 数组中的第K个最大元素 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode C代码 优先队列建堆 class Solution { public:int findKthLargest(vector<int>& nums, int k) {// 小根堆 根节点就是…

100个Python代码(一)

打印输出: pythonCopy code print("Hello, world!") 变量赋值: pythonCopy code x 10 基本数学运算: pythonCopy code addition 5 5 subtraction 10 - 5 multiplication 4 * 3 division 8 / 2 modulus 7 % 3 exponentiation 2 ** 3 字符串拼接: py…

MySQL数据库的索引

目录 1、索引的概念 2、索引的作用 优点 缺点 3、创建索引的原则依据 4、索引的分类和创建 ​编辑 4.1普通索引 直接创建索引 修改表方式创建索引 创建表时添加索引 删除索引 4.2唯一索引 直接创建唯一索引 修改表方式创建 创建表时指定索引 4.3主键索引&…

Lamdba表达式

Lamdba表达式 Lambda是一个匿名函数&#xff0c;我们可以将Lambda表达式理解为一段可以传递的代码&#xff08;将代码像数据一样 传递&#xff09;。使用它可以写出简洁、灵活的代码。作为一种更紧凑的代码风格&#xff0c;使java语言表达能力得到提 升。 Lambda表达式在java语…