解决绘图中乱码问题
plt.rcParams['font.sans-serif']=['Simhei'] # 解决中文乱码问题
plt.rcParams['axes.unicode_minus']=False # 解决坐标轴刻度负号乱码
Matplotlib三种不同的绘图方式
matplotlib是python最著名的绘图库,它提供了一整套和MATLAB相似的命令API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。
绘图方式 | 特点 | 优劣 |
---|---|---|
pyplot | 提供了一套和MATLAB类似的绘图API,将众多绘图对象所构成的复杂结构隐藏在这套API内部,推荐使用 | 简单易用,方便快捷,交互使用方便,可以根据命令实时作图,但底层定制能力不足 |
pylab | 包括了许多Numpy和pyplot模块中常用的函数,方便用户快速进行计算和绘图,十分适合在IPython交互式环境中使用 | 完全封装,环境最接近MATLAB,方便用户快速进行计算和绘图,十分适合在IPython交互式环境中 |
面向对象 | Matplotlib的精髓,更基础和底层的方式 | 接近Matplotlib基础和底层,难度稍大,但定制能力强 |
import matplotlib.pyplot as plt
import numpy as np
Matplotlib绘图要点:
matplotlib 绘图要点–figure, subplot
图:figure,用于创建一个新的绘图对象
fig = plt.figure(figsize = (8,5),dpi = 100)
# 参数
figsize :指定绘图对象的宽度和高度,单位为英寸
dpi:指定绘图对象的`分辨率`,即每英寸多少个像素,缺省值为80
子图的两种绘制方式:add_axes和add_subplot
面向对象的方式画图
- 添加坐标轴:ax = fig.add_axes([0.1,0.1,0.8,0.8])
x = np.linspace(0, 5, 10)
y = x ** 2
fig = plt.figure()
axes = fig.add_axes([0.1, 0.1, 0.8, 0.8]) # 添加坐标轴 left, bottom, width, height (range 0 to 1)
axes.plot(x, y, 'r')
axes.set_xlabel('x')
axes.set_ylabel('y')
axes.set_title('面向对象的方式绘图-add_axes')
axes2 = fig.add_axes([0.2, 0.5, 0.4, 0.3])
axes2.plot(y, x, 'g')
axes2.set_xlabel('y')
axes2.set_ylabel('x')
axes2.set_title('标题2')
plt.show()
- 添加子图:ax = fig.add_subplot(111)
x = np.linspace(0,5,10)
y = x**2
# 通过figure对象的.add_subplot方法添加子图
fig = plt.figure()
ax = fig.add_subplot(349) ## 参数349的意思是:将画布分割成3行4列,图像画在从左到右从上到下的第9块,如下图:
ax.plot(x,y)
ax.set_title("绘图——add_subplot")
plt.show()
- 创建二维线图实例在axes中:ax.plot(x,y)
pyplot 的方式
:通过figure对象的.add_subplot方法添加子图
- plt.plot()直接绘图,默认只有一个子图
plt.rc('figure', figsize=(8, 4)