Matplotlib可视化的几个核心概念(附速查表)

Crossin的编程教室

共 3130字,需浏览 7分钟

 ·

2021-04-24 02:22




📙【当当书香节优惠码】📕

200-30 优惠码: NR9EZR 

300-60 优惠码:HNZVTA 

有效期:4.12-4.23

叠加官方满优惠限当当自营(教辅教材除外)

当当小程序、APP 和网站都可使用

详细使用方法见文章: 

推荐一本经典计算机基础书籍(附当当优惠码)



大家好,欢迎来到 Crossin的编程教室 !

Matplotlib是一个python 2D绘图库,利用它可以画出许多高质量的图像。

不过,不知道你有没有这种体验,在matlablib中画出同一个图,通常可以有好多种不同的代码实现。

所以,如果不把以下这几个概念搞明白,你在网上找代码的时候会很懵,一会儿plt、一会ax,云里雾里一般。

今天就给大家分享一篇关于Matplotlib可视化的文章,帮大家理一理其中的核心概念。

整体结构

Figure(画板) 画一幅图,首先要确定画在哪里。所以,最先需要做的就是创建一个画板,对应图中红色的整体框架。

Axes(Subplot)(画纸、子图) 有了画板,拿来两张纸,开始画,其中一个就叫Axes1,另一个就是Axes2,对应绿色部分。

Axis(坐标轴) 横轴叫x坐标轴label,纵轴叫y坐标轴ylabel

生成这个图的代码如下:

import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

#第一步创建画布
fig = plt.figure()  # 如果不传入参数默认画板1

#第2步创建画纸,并选择画纸1
ax1=plt.subplot(2,1,1)   

#在画纸1上绘图
plt.plot()

#选择画纸2
ax2=plt.subplot(2,1,2)
#在画纸2上绘图
plt.plot()

显示图像
plt.show()

Matplotlib可用于Python脚本,Python和IPython shell,Jupyter笔记本,Web应用程序服务器和图形用户界面工具包。

本文是在jupyter笔记本中使用Matplotlib。

对于中文乱码和数字为负数乱码的情况,可添加以下的代码:

plt.rcParams['font.sans-serif']=['SimHei'# 防止中文乱码
plt.rcParams['axes.unicode_minus']=False # 如果需要将数字设为负数,也可能出现乱码的情况
看看一张图的细节

拿出一个Axes(subplot),看看细节吧。

当没有子图的时候,一个Figure就对应一个Axes,一套坐标轴。

最上方是标题Title

图例Legend 代表图形里的内容

网格Grid,True显示网格(图中没开网格)

坐标轴Axis,横轴叫x坐标轴label,纵轴叫y坐标轴ylabel

上图的代码如下:

plt.figure(figsize=(63))

x = np.linspace(0101000)
y1 = np.sin(x)
y2 = np.cos(x)

plt.plot(x, y1, color="blue", linewidth=1, label="sin")
plt.plot(x, y2, color="red", linewidth=1, label="cos")

plt.ylim(-1.1,1.1)

plt.xlabel('X') #x轴标签
plt.ylabel('Y') #y轴标签

plt.legend(loc='best') #图列位置,可选best,center等

plt.title("三角函数曲线图")
plt.show()
画图的整个流程

matplotlib画图可以总结为3个步骤:获取数据——画出基本图形——设置细节。

按照这个维度(步骤),如果想按照子图分别显示两个曲线(Sinx 和Cosx),可以这样来分析。

第一部分、获取数据

横坐标的数据是用numpy模块生成0-10内等间隔的1000个整数,纵坐标为sin函数和cos函数。

import numpy as np
x = np.linspace(0101000)
y1 = np.sin(x)
y2 = np.cos(x)

第二部分、画出基本图形

先创建画布,设置画布尺寸,然后在画纸1上绘制sinx,并设置线条宽度为1,颜色为蓝色;在画纸2上绘制cosx,设置线条宽度为1,颜色为红色。

plt.figure(figsize=(122))
ax1 = plt.subplot(1,2,1)
plt.plot(x, y1, color="blue", linewidth=1, label="sin")
ax2 = plt.subplot(1,2,2)
plt.plot(x, y2, color="red", linewidth=1, label="cos")

第三部分、完善细节

添加横纵坐标标签、图例、标题等细节。

plt.xlabel('X'#x轴标签
plt.ylabel('Y'#y轴标签
plt.legend(loc='best'#图列位置,可选best,center等
plt.title("sin函数曲线图")
plt.ylim(-1.1,1.1)
plt.show()

最终效果如图:


图表分类

按照数据之间的关系,可以把可视化视图划分为 4 类。

  1. 比较:比较数据间的各类别

柱状图、条形图、雷达图

  1. 联系:变量之间的关系

散点图、桑葚图

  1. 构成:每个部分占整体的比例

饼图、环形图、旭日图、堆积图

  1. 分布:关注变量的分布情况

散点图、直方图、地图、热力图、面积图

有了上文中的逻辑结构,虽然每种图形显示的意义以及绘图的参数不尽相同,但框架都是一样的,万变不离其宗。

剩下的就是调细节啦

这里推荐一篇我珍藏的知乎上的Matplotlib的入门文章,关于每种图形的详细参数都有详细介绍,可当做文档来查看。

https://zhuanlan.zhihu.com/p/70835617

十分钟|matplotlib上手,开启你的python可视化

另外,这张速查表,已经被推荐过很多次了。遇到小的细节,可随时翻看,回顾,值得收藏。

公众号后台回复 速查表 可获取高清版大图。

希望这篇文章能够帮你理清Matplotlib中的一些核心概念和整体框架,开始你的python可视化之旅。

如果文章对你有帮助,欢迎转发/点赞/收藏~

作者:天作

来源:GitPython


_往期文章推荐_

【一图流】Pandas官方速查表




如需了解付费精品课程教学答疑服务
请在Crossin的编程教室内回复: 666

浏览 36
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报