1.导入matplotlib模块
import numpy as np
import matplotlib.pyplot as plt
2.导入正余弦函数所需的坐标数据
x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
y_cos, y_sin = np.cos(x), np.sin(x)
3.创建画布,添加绘图区域
fig = plt.figure()
ax = fig.add_subplot(111)
4.开始绘制
#正弦曲线,linewidth是线宽
ax.plot(x, y_sin,'r', linewidth=1., label='Sin')
#余弦曲线,alpha为透明度
ax.plot(x, y_cos,'b', linewidth=1., alpha=0.7, label='Cos')
5.添加图表标题
ax.set_title("正余弦图表")
6.添加x轴和Y轴的刻度标签
ax.set_xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$\pi/2$', r'$\pi$'])
ax.set_yticks([-1., -0.5, 0., 0.5, 1.])
#在字符串前加r,意味该字符串将被视为原始字符串,所有转义字符都会被忽略
7.调整图例位置,显示网格
ax.legend(loc='upper left')
#loc用于粗略调整图例在整个绘图区域的位置
ax.grid(b=True,#b 表示是否显示网格
axis='both')
# axis表示显示哪个方向的网格,默认就是both,也支持x和y
8.使用annotate()添加指向性注释文本
ax.annotate("cos(1)",# 引号内输入注释文本的内容
xy=(1, np.cos(1)), # 表示被注释的点的位置,接收的是元组(x,y)
xytext=(np.pi/2.5, np.cos(0.7)), # 表示注释文本所在的坐标位置,接收的同上
arrowprops={'arrowstyle':'->'}) # 表示指示箭头的属性字典
9.使用fill_between()填充两条水平曲线之间的区域
# color和alpha为**kwargs参数
ax.fill_between(x, #x轴坐标的序列
y_cos, #第一条曲线的y轴坐标
y_sin, #第二条曲线的y轴坐标
y_cos > y_sin, #要填充区域的条件
color='g', #填充区域的颜色
alpha=0.5) #填充颜色的透明度
10.展示图表
plt.show()
完整代码如下
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
y_cos, y_sin = np.cos(x), np.sin(x)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, y_sin,'r', linewidth=1., label='Sin')
ax.plot(x, y_cos,'b', linewidth=1., alpha=0.7, label='Cos')
ax.set_title("正余弦图表")
ax.set_xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$\pi/2$', r'$\pi$'])
ax.set_yticks([-1., -0.5, 0., 0.5, 1.])
ax.legend(loc='upper left')
ax.grid(b=True,
axis='both')
ax.annotate("cos(1)",
xy=(1, np.cos(1)),
xytext=(np.pi/2.5, np.cos(0.7)),
arrowprops={'arrowstyle':'->'})
ax.fill_between(x, y_cos,y_sin, y_cos > y_sin,color='g', alpha=0.3)
plt.show()
运行结果如图所示