用python实现,使用numpy和matplotlib绘制带局部阴影的坐标系,两条曲线分别是y = cos(2Πx)exp(-x)+0.8和 y = 0.5 cos(x2)+0.8,阴影区间自定义,
时间: 2024-03-25 10:39:19 浏览: 104
可直接运行 基于Python numpy matplotlib pyplot 向正弦曲线添加阴影效果 运行后直接出图.rar
好的,这是一个绘图的问题,我们可以使用Python的matplotlib库实现。
首先,我们需要导入相关的库:matplotlib以及numpy用于数学计算。
```python
import numpy as np
import matplotlib.pyplot as plt
```
然后,我们定义两个函数y1和y2:
```python
def y1(x):
return np.cos(2*np.pi*x)*np.exp(-x)+0.8
def y2(x):
return 0.5*np.cos(x**2)+0.8
```
接下来,我们创建一个画布,然后在画布上创建一个坐标系:
```python
fig, ax = plt.subplots(figsize=(8, 6))
```
我们使用figsize参数来设置画布的大小,让它更适合我们的需要。
接下来,我们在坐标系上绘制两个函数的图像:
```python
x = np.linspace(0, 3, 1000)
ax.plot(x, y1(x), color='blue', linewidth=1, label='y1')
ax.plot(x, y2(x), color='red', linewidth=1, label='y2')
```
我们使用np.linspace()函数生成一个包含1000个值的数组,用于绘制函数图像。我们使用plot()函数绘制相应的函数,并设置线条的颜色、宽度、标签等参数。
接下来,我们使用fill_between()函数绘制局部阴影:
```python
xshade = np.linspace(0.8, 1.8, 100)
yshade = y1(xshade)
ax.fill_between(xshade, yshade, 0.8, color='blue', alpha=0.2)
xshade = np.linspace(1.5, 2.5, 100)
yshade = y1(xshade)
ax.fill_between(xshade, yshade, 0.8, color='blue', alpha=0.2)
xshade = np.linspace(0.5, 2.5, 100)
yshade = y2(xshade)
ax.fill_between(xshade, yshade, 0.8, color='red', alpha=0.2)
```
我们使用np.linspace()函数生成三个数组,用于绘制相应的阴影区域。然后,我们使用fill_between()函数绘制相应的阴影,并设置颜色、透明度等参数。
最后,我们使用legend()函数添加图例,并使用xlabel()和ylabel()函数添加坐标轴标签:
```python
ax.legend(loc='upper right')
ax.set_xlabel('x')
ax.set_ylabel('y')
```
完整代码如下:
```python
import numpy as np
import matplotlib.pyplot as plt
def y1(x):
return np.cos(2*np.pi*x)*np.exp(-x)+0.8
def y2(x):
return 0.5*np.cos(x**2)+0.8
fig, ax = plt.subplots(figsize=(8, 6))
x = np.linspace(0, 3, 1000)
ax.plot(x, y1(x), color='blue', linewidth=1, label='y1')
ax.plot(x, y2(x), color='red', linewidth=1, label='y2')
xshade = np.linspace(0.8, 1.8, 100)
yshade = y1(xshade)
ax.fill_between(xshade, yshade, 0.8, color='blue', alpha=0.2)
xshade = np.linspace(1.5, 2.5, 100)
yshade = y1(xshade)
ax.fill_between(xshade, yshade, 0.8, color='blue', alpha=0.2)
xshade = np.linspace(0.5, 2.5, 100)
yshade = y2(xshade)
ax.fill_between(xshade, yshade, 0.8, color='red', alpha=0.2)
ax.legend(loc='upper right')
ax.set_xlabel('x')
ax.set_ylabel('y')
plt.show()
```
运行代码,我们就可以看到绘制好的带局部阴影的坐标系:
阅读全文