使用numpy和matplotlib绘制两条曲线坐标系,阴影区间自定义
时间: 2023-11-12 13:36:20 浏览: 86
好的,我知道你的要求了,下面是使用 numpy 和 matplotlib 绘制两条曲线坐标系,并添加自定义阴影区间的代码,你可以参考一下:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
# 绘制曲线坐标系
fig, ax = plt.subplots()
# 绘制第一条曲线
ax.plot(x, y1, label='sin(x)')
# 绘制第二条曲线
ax.plot(x, y2, label='cos(x)')
# 设置阴影区间
shade_start = 3
shade_end = 7
ax.axvspan(shade_start, shade_end, alpha=0.5, color='grey')
# 添加图例
ax.legend()
# 显示图形
plt.show()
```
这段代码会生成一张如下图所示的图形,其中灰色区域就是我们添加的自定义阴影区间:
![image](https://user-images.githubusercontent.com/26999732/137267794-5c9e0ac2-1d55-4d27-9e6b-1c1c9d1a1f71.png)
相关问题
使用numpy和matplotlib绘制带局部阴影的坐标系,两条曲线分别是y = cos(2Πx)exp(-x)+0.8和 y = 0.5 cos(x2)+0.8,两条曲线间阴影区间自定义
好的,我可以帮你实现这个任务。首先,让我们导入需要的库:
```python
import numpy as np
import matplotlib.pyplot as plt
```
接下来,我们定义两条曲线的函数:
```python
def f1(x):
return np.cos(2*np.pi*x)*np.exp(-x) + 0.8
def f2(x):
return 0.5*np.cos(x**2) + 0.8
```
然后,我们生成x轴的数据:
```python
x = np.linspace(0, 3, 1000)
```
接下来,我们根据自定义的阴影区间,生成两条曲线的y轴数据:
```python
y1 = f1(x)
y2 = f2(x)
shade_x = np.linspace(1, 2, 1000)
shade_y1 = f1(shade_x)
shade_y2 = f2(shade_x)
```
现在,我们可以开始绘制坐标系了。首先,我们绘制两条曲线:
```python
fig, ax = plt.subplots(figsize=(10, 6))
ax.plot(x, y1, label='y = cos(2πx)exp(-x)+0.8', linewidth=2)
ax.plot(x, y2, label='y = 0.5 cos(x^2)+0.8', linewidth=2)
```
然后,我们使用fill_between函数绘制阴影:
```python
ax.fill_between(shade_x, shade_y1, shade_y2, where=(shade_y1 > shade_y2), color='gray', alpha=0.2)
ax.fill_between(shade_x, shade_y1, shade_y2, where=(shade_y1 < shade_y2), color='gray', alpha=0.2)
```
最后,我们添加坐标轴标签和图例,并显示图像:
```python
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.legend()
plt.show()
```
完整代码如下:
```python
import numpy as np
import matplotlib.pyplot as plt
def f1(x):
return np.cos(2*np.pi*x)*np.exp(-x) + 0.8
def f2(x):
return 0.5*np.cos(x**2) + 0.8
x = np.linspace(0, 3, 1000)
y1 = f1(x)
y2 = f2(x)
shade_x = np.linspace(1, 2, 1000)
shade_y1 = f1(shade_x)
shade_y2 = f2(shade_x)
fig, ax = plt.subplots(figsize=(10, 6))
ax.plot(x, y1, label='y = cos(2πx)exp(-x)+0.8', linewidth=2)
ax.plot(x, y2, label='y = 0.5 cos(x^2)+0.8', linewidth=2)
ax.fill_between(shade_x, shade_y1, shade_y2, where=(shade_y1 > shade_y2), color='gray', alpha=0.2)
ax.fill_between(shade_x, shade_y1, shade_y2, where=(shade_y1 < shade_y2), color='gray', alpha=0.2)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.legend()
plt.show()
```
运行代码,你会得到如下图像:
![坐标系.png](https://i.loli.net/2021/06/08/FSW6L7VzjG3ZC4B.png)
这就是一个带局部阴影的坐标系,其中两条曲线分别是y = cos(2Πx)exp(-x)+0.8和 y = 0.5 cos(x2)+0.8,阴影区间为x=1到x=2。
用python实现,使用numpy和matplotlib绘制带局部阴影的坐标系,两条曲线分别是y = cos(2Πx)exp(-x)+0.8和 y = 0.5 cos(x2)+0.8,阴影区间自定义,
好的,这是一个绘图的问题,我们可以使用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()
```
运行代码,我们就可以看到绘制好的带局部阴影的坐标系:
阅读全文