matpotlib基础理论
概述
matplotlib三层API
- matplotlib.backend_bases.FigureCanvas 绘图区,所有的图像都是在绘图区完成的
- matplotlib.backend_bases.Renderer 渲染器,可以近似理解为画笔,控制如何在 FigureCanvas 上画图。
- matplotlib.artist.Artist 具体的图表组件,即调用了Renderer的接口在Canvas上作图。
前两者处理程序和计算机的底层交互的事项,第三项Artist就是具体的调用接口来做出我们想要的图,比如图形、文本、线条的设定。所以通常来说,数据可视化主要围绕matplotlib.artist.Artist类进行
Artist分类
- primitive 基本要素,包含一些我们要在绘图区作图用到的标准图形对象,如曲线Line2D,文字text,矩形Rectangle,图像image等
- container 容器,用来装基本要素的地方,包括图形figure、坐标系Axes和坐标轴Axis
形象化解释如图
matplotlib标准用法
标准使用流程:
- 创建一个Figure实例
- 使用Figure实例创建一个或者多个Axes(一种容器)或Subplot实例
- 使用Axes实例辅助方法来创建primitive
示例如下:
import matplotlib.pyplot as plt
import numpy as np
# step 1
# 创建了一个Figure实例
fig = plt.figure()
# step 2
# 创建了一个两行一列(即可以有两个subplot)的绘图区,并同时在第一个位置创建了一个subplot
ax = fig.add_subplot(2, 1, 1)
# step 3
# 用Axes实例的方法画了一条曲线
t = np.arange(0.0, 1.0, 0.01)
s = np.sin(2*np.pi*t)
line, = ax.plot(t, s, color='blue', lw=2)
效果如图:
基本元素 ——primitives
2DLines
- 通过类 matplotlib.lines.Line2D 完成,即构造函数matplotlib.lines.Line2D(args)
- 基类:matplotlib.artist.Artist
常用参数:
- xdata:X轴上取值,默认range(1,len(ydata)+1)
- ydata:y轴上取值
- linewidth:线条的宽度
- linestyle:线型
- color:线条的颜色
- marker:点的标记
- markersize:标记的size
属性设置:
- 直接在plot()函数中设置
- 获得线对象,并对线对象进行设置
- 获得线属性,并使用setp()函数设置
lines绘制:
- 绘制直线line
- errorbar绘制误差折线图
绘制直线方法:
- plot方法绘制
- Line2D对象绘制
误差折线图绘制:
- 通过errorbar类实现
- 构造函数:matplotlib.pyplot.errorbar(arg)
主要参数:
- x:x轴上的取值
- y:y轴上的取值
- xerr:指定x轴水平的误差
- yerr:指定y轴水平的误差
- fmt:指定折线图中某个点的颜色,形状,线条风格,例如‘co–’
- ecolor:指定error bar的颜色
- elinewidth:指定error bar的线条宽度
patches
- 二维图像类
- 基类:matplotlib.artist.Artist
- 构造函数:Patch(arg)
Rectangle:
- 矩形类
- 通过锚点xy及其宽度和高度生成
- 构造函数:matplotlib.patches.Rectangle(x,y,width,height)
常见矩形图:
- hist直方图
- 构造函数:matplotlib.pyplot.hist(arg**)
常用参数:
- x: 数据集,直方图对数据集进行统计
- bins: 统计的区间分布
- range: tuple, 显示区间,range在没有给出bins时生效
- density: bool,默认false,显示频数统计结果,为True则显示频率统计结果,频率统计结果=区间数目/(总数*区间宽度)
- histtype: 可选{‘bar’, ‘barstacked’, ‘step’, ‘stepfilled’}之一,默认为bar
- align: 可选{‘left’, ‘mid’, ‘right’}之一,默认为’mid’,控制柱状图的水平分布,left或者right
- log: bool,默认False,y坐标轴是否选择指数刻度
stacked: bool,默认为False,是否为堆积状图
- bar条形图