编写程序。绘制一个包含正弦曲线和余弦曲线的图表,要求 正弦曲线的样式:红色、线宽为1.0;余弦曲线的样式:蓝色、线宽为1.0,透明度为0.5;x轴的刻度标签为“-π”、 “-π/2”、 “0”、 “π/2”、 “-π”;填充余弦值大于正弦值的区域为绿色,透明度为0.25。
时间: 2024-10-22 09:06:13 浏览: 44
要创建这样一个图表,我们可以使用Python的matplotlib库。以下是一个示例代码片段:
```python
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import BrokenBarhCollection
# 定义x轴的特殊刻度标签
x_labels = [-np.pi, -np.pi / 2, 0, np.pi / 2, np.pi]
# 创建x轴范围和步长
x = np.linspace(-np.pi, np.pi, 400)
sin_data = np.sin(x)
cos_data = np.cos(x)
# 绘制正弦和余弦曲线
plt.plot(x, sin_data, color='red', linewidth=1.0, label='Sine')
plt.plot(x, cos_data, color='blue', linewidth=1.0, alpha=0.5, label='Cosine')
# 计算并填充正弦小于余弦的部分
filled_area = np.where(sin_data < cos_data, cos_data - sin_data, 0)
face_colors = ['none'] * len(x) + ['green', alpha=0.25] + ['none'] * (len(x) - 2)
# 创建垂直条形图集合
bar_segments = [[i, i+1, j, j] for i, j in enumerate(filled_area)]
collection = BrokenBarhCollection(bar_segments, facecolors=face_colors)
# 添加到图中
plt.gca().add_collection(collection)
# 设置x轴刻度标签
plt.xticks(np.arange(0, len(x_labels), 2), x_labels)
# 添加标题和图例
plt.title('Sinusoid vs Cosine with Filled Area')
plt.xlabel('x (radians)')
plt.ylabel('y')
plt.legend()
# 显示图形
plt.show()
```
这段代码首先定义了x轴的特殊刻度标签,然后生成了正弦和余弦曲线的数据。接着,通过比较正弦和余弦值来确定填充部分,并用`BrokenBarhCollection`来创建垂直条形图表示填充区域。最后设置了x轴刻度标签和图例,展示了最终的图表。
阅读全文