Matplotlib可视化的几个核心概念(附速查表)
📙【当当书香节优惠码】📕
200-30 优惠码: NR9EZR
300-60 优惠码:HNZVTA
有效期:4.12-4.23
可叠加官方满减优惠;限当当自营(教辅教材除外)
当当小程序、APP 和网站都可使用
详细使用方法见文章:
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=(6, 3))
x = np.linspace(0, 10, 1000)
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(0, 10, 1000)
y1 = np.sin(x)
y2 = np.cos(x)
第二部分、画出基本图形
先创建画布,设置画布尺寸,然后在画纸1上绘制sinx,并设置线条宽度为1,颜色为蓝色;在画纸2上绘制cosx,设置线条宽度为1,颜色为红色。
plt.figure(figsize=(12, 2))
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 类。
比较:比较数据间的各类别
柱状图、条形图、雷达图
联系:变量之间的关系
散点图、桑葚图
构成:每个部分占整体的比例
饼图、环形图、旭日图、堆积图
分布:关注变量的分布情况
散点图、直方图、地图、热力图、面积图
有了上文中的逻辑结构,虽然每种图形显示的意义以及绘图的参数不尽相同,但框架都是一样的,万变不离其宗。
剩下的就是调细节啦!
这里推荐一篇我珍藏的知乎上的Matplotlib的入门文章,关于每种图形的详细参数都有详细介绍,可当做文档来查看。
https://zhuanlan.zhihu.com/p/70835617
十分钟|matplotlib上手,开启你的python可视化
另外,这张速查表,已经被推荐过很多次了。遇到小的细节,可随时翻看,回顾,值得收藏。
公众号后台回复 速查表 可获取高清版大图。
希望这篇文章能够帮你理清Matplotlib中的一些核心概念和整体框架,开始你的python可视化之旅。
作者:天作
_往期文章推荐_