目录
图表辅助元素定制(图表标题,刻度标签,图例,网格,指向型注释文本)
需求:
绘制一个包含正弦曲线和余弦曲线的图表,具体要求如下:
(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
准备数据
x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
y_cos, y_sin = np.cos(x), np.sin(x)
绘制折线
plt.plot(x, y_sin, color='red', linewidth=1.0)
plt.plot(x, y_cos, color='blue', linewidth=1.0, alpha=0.5)
plt.plot
函数绘制折线图,color
参数用于设置颜色,linewidth
用于设置线宽,alpha
用于设置透明度。
图表辅助元素定制(图表标题,刻度标签,图例,网格,指向型注释文本)
plt.title('正弦曲线和余弦曲线')
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$'])
plt.yticks([-1, 0, +1])
plt.annotate('cos(1)', xy=(1, np.cos(1)), xycoords='data',
xytext=(-50, -50), textcoords='offset points',
arrowprops=dict(arrowstyle='->', connectionstyle='arc3,rad=.2'))
plt.legend(['sin', 'cos'])
plt.grid(True)
plt.xticks
和 plt.yticks
用于设置坐标轴上的刻度标签,r'$+\pi$'
用于生成带有数学符号的字符串。
plt.annotate
用于添加指向型注释文本,xy
表示注释文本的位置,xytext
表示文本偏移的位置,arrowprops
用于指定箭头的样式。
plt.legend
用于添加图例,plt.grid
用于显示网格线。
plt.fill_between
用于填充两条曲线之间的区域,where
参数指定在哪些点填充区域,interpolate
参数表示使用插值方法来填充区域,color
和 alpha
参数分别用于设置填充颜色和透明度。
图表样式美化(填充颜色)
plt.fill_between(x, y_cos, y_sin, where=(y_cos > y_sin),
interpolate=True, color='green', alpha=0.25)
显示图形
plt.show()
plt.xticks
和 plt.yticks
用于设置坐标轴上的刻度标签,r'$+\pi$'
用于生成带有数学符
总代码:
# 1.导入所需库
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.绘制折线
plt.plot(x, y_sin, color='red', linewidth=1.0)
plt.plot(x, y_cos, color='blue', linewidth=1.0, alpha=0.5)
# 4.图表辅助元素定制(图表标题,刻度标签,图例,网格,指向型注释文本)
plt.title('正弦曲线和余弦曲线')
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$'])
plt.yticks([-1, 0, +1])
plt.annotate('cos(1)', xy=(1, np.cos(1)), xycoords='data',
xytext=(-50, -50), textcoords='offset points',
arrowprops=dict(arrowstyle='->', connectionstyle='arc3,rad=.2'))
plt.legend(['sin', 'cos'])
plt.grid(True)
# 5.图表样式美化(填充颜色)
plt.fill_between(x, y_cos, y_sin, where=(y_cos > y_sin),
interpolate=True, color='green', alpha=0.25)
# 6.显示图形
plt.show()
输出如下: