Matplotlib基础

学习教程

Matplotlib 由 John D. Hunter 在 2002 年开始编写, 2003 年 Matplotlib 发布了第一个版本,Matplotlib 默认不支持中文字体,这因为 Matplotlib 只支持 ASCII 字符。
一个对matplotlib有利的设计决定是支持使用C++模板库Anti-Grain Geometry(agg)的基于像素点的核心渲染器。这是一个高性能库,可以进行2D反锯齿渲染,生成的图像非常漂亮。matplotlib支持将agg后端渲染的像素缓存插入到每种支持的用户界面中,所以在不同的UI与操作系统下都能得到精确像素点的图形。因为matplotlib生成的PNG输出也使用agg渲染器,所以硬拷贝与屏幕显示完全相同,也就是说在不同的UI与操作系统下,PNG的输出所见即所得。

Matplotlib教程(非常详细)

matplotlib绘图原理

必须理解画布(figure),坐标系(axes)和坐标轴(axis)的区别。figure是画布,而坐标系axes是画布上的一个子图(subplot),axis是子图上的坐标系。
Matplotlib基础_第1张图片

绘图类型

折线图plt.plot、散点图plt.scatter、柱形图plt.bar、饼图plt.pie、极坐标图、阶梯图
直方图plt.hist、等高线图、振动图、箱型图

创建figure(画布)的两种方式

(1) 隐式创建figure对象
当第一次执行plt.xxx()画图代码时,系统会去判断是否已经有了figure对象,如果没有,系统会自动创建一个figure对象,并且在这个figure之上,自动创建一个axes坐标系(注意:默认创建一个figure对象,一个axes坐标系)。
优势:如果只是绘制一个小图形,那么直接使用plt.xxx()的方式,会自动帮我们创建一个figure对象和一个axes坐标系,这个图形最终就是绘制在这个axes坐标系之上的。
劣势:如果我们想要在一个figure对象上,绘制多个图形,那么我们就必须拿到每个个axes对象,然后调用每个位置上的axes对象,就可以在每个对应位置的坐标系上,进行绘图。
(2)显示创建figure对象
手动创建一个figure对象figure = plt.figure()
获取每个位置的axes对象axes1 = figure.add_subplot(2,1,1)axes2 = figure.add_subplot(2,1,1)

figure的使用

(1)plt.figure()涉及的参数
Matplotlib基础_第2张图片

(2)想将图像显示在哪个图片上,就将那个图像在那个图片下面plot即可。然后多个figure的最后再show一下。

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-1,1,50)
y=2*x+1
y1=x**2
plt.figure()
plt.plot(x,y)

plt.figure()
plt.plot(x,y1)
plt.show()

Matplotlib基础_第3张图片
(3)也可以在一个图片里面显示多个图像

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-1,1,50)
y1=2*x+1
y2=x**2
plt.plot(x,y1,color="red",linewidth=1.0,linestyle="--")
plt.plot(x,y2,color="blue",linewidth=1.0,linestyle="-")
plt.show()

Matplotlib基础_第4张图片

中文乱码解决方案

(1)重写配置文件

#绘制折线图
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] #设置字体
plt.rcParams["axes.unicode_minus"]=False #正常显示负号

year = [2017, 2018, 2019, 2020]
people = [20, 40, 60, 70]
plt.plot(year, people)
plt.xlabel('年份')
plt.ylabel('人口')
plt.title('人口增长')
#设置纵坐标刻度
plt.yticks([0, 20, 40, 60, 80])
#设置填充选项:参数分别对应横坐标,纵坐标,纵坐标填充起始值,填充颜色
plt.fill_between(year, people, 20, color = 'green')
plt.show()

(2)修改配置文件
(3)fontdict 字典参数
plt.xlabel(“时间周期/min”, fontsize=13, fontdict={“family”: “KaiTi”, “size”: 15, “color”: “r”})

细节设置

* figure 画布
* axes 坐标系,一个画布上可以有多个坐标系
* axis 坐标轴,一个坐标系中可以有多个坐标轴,一般都是二维平面坐标系,或者三维立体坐标系
* title 标题
* legend 图例
* grid 背景网格
* tick 刻度
* axis label 坐标轴名称
* tick label 刻度名称
* major tick label 主刻度标签
* minor tick label 副刻度标签
* line 线
* style 线条样式
* marker 点标记
* font 字体相关

你可能感兴趣的:(python,计算机视觉)