可视化是我们在进行数据分析时常用操作之一,在使用python实现可视化时,matplotlib、Seaborn等是常用的工具,除此之外,还有很多其他(我没用过的)绘图工具,如Bokeh 、ggplot等,有兴趣的可以去学习一下。本文先对画图版块进行简单的介绍,再介绍画单个图及包含子图的图时常用的基础操作,后续有用到其他功能再进行补充。
最好的使用说明:Matplotlib: Python plotting — Matplotlib 3.4.1 document
首先声明,为了保证绘图得到想要的效果,最好都输入numpy.array类型的数据。
官网上这张图清晰明了地展示了各个关键字在绘图中对应的部件。
Figure可以看作最大的画图容器,而每次绘图实际上都是在axes上,如果要在一张图上绘制多个子图,就会有多个axes,但只有一个Figure。一个Figure要包含至少1个axes。axes中有两个(二维图)或者三个(三维图)axis(轴)。
使用matplotlib绘图有两种完全等效的方式:面向对象(OO) 和直接使用 pyplot。官方文档建议选择一种持续使用,以免搞混,并建议使用OO进行非交互式绘图,pyplot进行交互式绘图。面向对象(OO)就是显式定义figure和axes,并在轴上绘制;直接使用pyplot就是依赖pyplot自动创建figure和axes。举例如下:
- pyplot
import matplotlib.pyplot as plt
import numpy as np
# pyplot方法
# Plot some data on the (implicit) axes.
plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
- 面向对象(OO)
这种方法虽然语句稍长,但是结构清晰,几个图几个轴一眼就能看出来。
# 面向对象(OO)
# Create a figure containing a single axes.(Explicitly )
fig, ax = plt.subplots()
ax.plot([1, 2, 3, 4], [1, 4, 2, 3]) # Plot some data on the axes.
当要创建多个axes时
fig, axs = plt.subplots(2, 3) # a figure with a 2x3 grid of Axes
此时axs是个包含二维列表(2*3)比如axs[0][0]就表示图片左上方的轴,可以选择相应轴进行绘制。
x = np.linspace(0, 2, 100)
axs[0][0