需求:绘制一个包含正弦曲线和余弦曲线的图表,具体要求如下:
(1) 正弦曲线的样式:红色、线宽为1.0;
(2) 余弦曲线的样式:蓝色、线宽为1.0,透明度为0.5;
(3) x轴的刻度标签为“-π”、 “-π/2”、 “0”、 “π/2”、 “-π”;
(4) 在x=1、y=np.cos(1)的位置添加指向型注释文本;
(5) 为正弦曲线和余弦曲线封闭起来的区域填充绿色,透明度为0.25.
import numpy as np
import matplotlib.pyplot as plt
# 1.准备数据
x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
y_cos, y_sin = np.cos(x), np.sin(x)
# 2.绘制折线
plt.plot(x, y_cos, color='blue', linewidth=1.0, alpha=0.5)
plt.plot(x, y_sin, color='red', linewidth=1.0)
# 3.图表辅助元素定制(图表标题,刻度标签,图例,网格,指向型注释文本)
# 添加图表标题
plt.title('Cos & Sin', loc='center')
# x轴的刻度标签
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
[r'$-\pi$', r'$-\pi/2$',
r'$0$',
r'$\pi/2$', r'$\pi$']) #编写数学表达式参考matplotlib的官网)
# y轴的刻度标签
plt.yticks([-1.0, -0.5, 0.0, 0.5, 1.0])
# 添加图例
lines = plt.plot(x, y_cos, x, y_sin)
plt.legend(lines, ['cos', 'sin'], ncol=1, loc='upper left')
# 添加网格
plt.grid( )
# 添加指向型注释文本
plt.annotate("cos(1)",
xy=(np.pi/3, 0.55),
xytext=((np.pi/2.6) ,0.8),
arrowprops={'arrowstyle':'->'})
# 4.图表样式美化(填充颜色)
plt.fill_between(x, y_cos, y_sin, y_cos > y_sin, color='g', alpha=0.25)
plt.show()
最终的效果见运行结果图示。
添加指向型注释文本
指向型注释文本是指通过指示箭头的注释方式对绘图区域的图形进行解释的文本,它一般使用线条连接说明点和箭头指向的注释文字。pyplot模块中提供了annotate() 函数为图表添加指向型注释文本,该函数的语法格式如下所示:
annotate(s, xy, *args,**kwargs)
该函数常用参数的含义如下。
*s:表示注释文本的内容。
*xy:表示被注释的点的坐标位置,接收元组( x,y )。
*xytext :表示注释文本所在的坐标位置,接收元组( x,y )。
*xycoords :表示xy的坐标系统,默认值为“data”,代表与折线图使用相同的坐标系统。
*arrowprops:表示指示箭头的属性字典。
*bbox:表示注释文本的边框属性字典。
arrowprops 参数接收一个包含若干键的字典,通过向字典中添加键值对来控制箭头的显示。常见的控制箭头的键包括width、headwidth、headlength、shrink、arrowstyle等,其中键 arrowstyle代表箭头的类型,该键对应的值及对应的类型如图所示。