花了二个多礼拜,终于上完了这章课程,对于matplotlib的绘图,确实太多了,我也要一直翻阅官方文档来对应一个函数的功能,这确实太麻烦了,我这个系列有二个,所以我打算搞个博客,帮助一下我和所有刚学的人,这是基础版本,进阶的版本我也有写在我博客里面,欢迎查阅!
基础版本
函数库:
使用子库:pyplot
from matplotlib import pyplot as plt
# 本博客涉及其他函数库如下
import matplotlib
import numpy as np
显示中文
matplotlib.rcParams['font.family'] = 'SimHei'
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
主要绘图区域函数
函数 | 描述 |
---|---|
plt.figure(figsize=[x,j], facecolor=None) | 绘制区域大小 |
plt.subplot(nrows, ncols, plot_number) | 在全局绘图区域创建一个子绘图区域 |
plt.axes(rect, axisbg=‘w’) | 创建一个坐标系风格的子绘图区域 |
plt.subplots_adjust() | 调整子绘图区域的布局 |
参数rect = [left, bottom, width, height] 四个变量的范围都是[0 - 1],表示坐标系与全局绘图区域的比例关系
plt基础图表函数
函数 | 描述 |
---|---|
plt.polt(x,y,‘k’,label,color,linewidth) | 根据x,y数组绘制直线或者曲线 |
plt.boxplot(data, notch, position) | 绘制一个箱线图 |
plt.bar(left, height, width, bottom) | 绘制一个条形图 |
plt.barh(bottom, width, height, left) | 绘制一个横向条形图 |
plt.pie(data, labels) | 绘制一个饼图 |
plt.hist(data,x,bins) | 绘制一个直方图 |
plt.scatter(data, x, y) | 绘制一个散点图 |
plt.polar(theta, r) | 绘制一个极坐标图 |
polt函数的k类参数
plt中的基本函数
函数 | 描述 |
---|---|
plt.show() | 显示这个图表 |
plt.axis() | 获得设置轴属性的快捷方式 |
plt.xlim(xmin,xmax) | 设置x轴的取值范围 |
plt.ylim(ymin,ymax) | 设置y轴的取值范围 |
plt.xscale() | 设置x轴缩放 |
plt.yscale() | 设置y轴缩放 |
plt.title() | 设置标题 |
plt.xticks(loc(列序号), label(标签), rotation(角度)) | 设置当前x轴的刻度位置的标签和值和旋转角度 |
plt.yticks(loc(列序号), label(标签), rotation(角度)) | 设置当前y轴的刻度位置的标签和值和旋转角度 |
plt.text(x,y,s,fontdic,withdash) | 为坐标图轴添加注释 |
plt.grid(on/off) | 打开或者关闭坐标网络 |
plt.legend() | 为当前绘图区域防止图注 |
plt.annotate(note, xy,xytext,xycoords,textcoords,arrowprops) | 用箭头在指定数据点创建一个注释或者一个文本 |
plt中的区域填充函数
函数 | 描述 |
---|---|
fill(x,y,c,color) | 填充多边形 |
fill_between(x,y1,y2,where,color) | 填充二条曲线围成的多边形 |
fill_betweenx(y,x1,x2,where,hold) | 填充二条水平线之间的区域 |
实例一: 简单的绘制曲线图
x = np.linspace(0, 6, 100) # 把 0 - 6 100等分
y = np.cos(2 * np.pi * x) * np.exp(-x) + 0.8 # 构造函数
plt.plot(x, y ,label='cos(2*Pi*x)*(1/e)^x + 0.8',color='red', linewidth=3)
plt.title('plot图') # 标题
plt.xlabel('x') # x轴标题
plt.ylabel('y') # y轴标题
plt.legend() # 设置图注
plt.show() # 显示这个图标
实例二: 使用内置的数学公式
plt.plot([1, 2, 4],[1, 2, 3],label='x:y')
plt.title('简单的x对应y关系图')
plt.xlabel('时间(s)')
plt.ylabel('范围(m)')
x_lable =[r'$\pi/3$', r'$2\pi/3$', r'$\pi$',r'$4\pi/3$',r'$5\pi/3$']
plt.xticks([i for i in range(1,6)],x_lable) # 定义x轴标签
plt.legend() # 增加图注
plt.ylim(0,5) # y坐标的范围
plt.show()
关于数学公式的讲解: 使用$$可以使用内置的latex引擎,然后\pi是转义字符,等于Π,前面的r是绝对引用
实例三: 使用区域填充函数
x = np.linspace(0, 10, 1000)
y = np.cos(2 * np.pi * x) * np.exp(-x) + 0.8
plt.plot(x, y, label='$exp-decay$',linewidth=3,color='red')
ix = (x > 0.4) & (x < 2.4) # 填充的x范围
plt.fill_between(x, 0,y,where=ix,color='pink') # 填充
plt.legend()
plt.text(1.5,0.2,r'$\int_a^bf(x)\mathrm{d}x$',ha='center') # 添加图表注释
plt.xlim(0,10) #x范围
plt.ylim(0,2) #y范围
plt.show()
实例四: 绘制笛卡尔心形图
plt.figure(figsize=[10,4])
plt.subplot(1, 2, 1)
t = np.linspace(0, 2 * np.pi, 1000)
x = np.sin(t)
y = np.cos(t) + np.power(x, 2.0/3)
plt.plot(x, y, color='red',linewidth=3)
plt.plot(-x, y, color='red', linewidth=3)
plt.title('笛卡尔心形图')
plt.xlim(-2,2) # x
plt.ylim(-2,2) # y
plt.subplot(1, 2, 2, polar=True) # 固定区域
rho = 5 * (1 - np.sin(t))
plt.polar(t, rho, color='red') # 极坐标
plt.title('笛卡尔心形图')
plt.show()
实例五: 综合绘制
def Draw(): # 绘制函数
plt.plot(x, y, label='$exp-seruf$',color='red',linewidth=3)
plt.plot(x, z,'b--', label='$cos(x^2)$',color='green',linewidth=1)
plt.xlabel('时间(s)')
plt.ylabel('幅度(mV)')
plt.title('阻尼衰减曲线')
# 增加箭头指向 具体使用参考官方文档
plt.annotate('$\cos(2\pi t)\exp(-t)$', xy=(1, np.cos(2*np.pi)*np.exp(-1)+0.8),\
xytext=(1, 1.4), fontsize=14, arrowprops=dict(arrowstyle='->',connectionstyle='arc3, rad=.1'))
def xy_lim(): # 坐标的设置
plt.xlim(0, 6)
plt.ylim(0, 1.8)
plt.xticks([i for i in range(1,7)], [r'$\pi/3$', r'$2\pi/3$', r'$\pi$',r'$4\pi/3$',r'$5\pi/3$',r'$2\pi$'])
def fill(): # 图像的填充
ix = (x > 1) & (x < 3)
plt.fill_between(x,0,y,where=ix,color='pink',alpha=0.5)
# 增加文本说明
plt.text(1.5,0.2,r'$\int_a^bf(x)\mathrm{d}x$',ha='center')
# 构建三个变量构成二条曲线
x = np.linspace(0.0, 6.0, 100)
y = np.cos(2 * np.pi * x) * np.exp(-x) + 0.8
z = 0.5 * np.cos(x ** 2) + 0.8
# 绘制区域
plt.figure(figsize=[8, 6], facecolor='white')
Draw() # 绘制图像
fill() # 对图形的填充
xy_lim() # 对xy轴下标设置
plt.legend() # 增加图注
plt.savefig('阻尼衰减曲线.jpg') # 图像保存
plt.show()
刚收到信息,五月七号以后高校准备开学,不知道这日子到底什么时候结束,但愿春暖花开之日,皆是你我小有成就之日。