用subplot在同一平面的不同窗口画出 下列两条曲线
时间: 2024-10-22 13:21:17 浏览: 48
在Matplotlib库中,你可以使用`subplot`函数来创建一个网格,并在其中的不同小窗口(称为子图)上绘制不同的曲线。`subplot`让你可以控制行、列以及子图的索引,以便于管理多个图形。下面是一个基本的例子:
```python
import matplotlib.pyplot as plt
# 创建一个2x1的网格
plt.subplot(2, 1, 1) # 第1个小窗口,第一行第二列的第一个子图
x1 = [0, 1, 2, 3]
y1 = [0, 4, 9, 16]
plt.plot(x1, y1, label='First Curve')
# 创建第二个小窗口
plt.subplot(2, 1, 2) # 第二个小窗口,也是第一行第二列的第二个子图
x2 = [1, 2, 3, 4]
y2 = [1, 2, 3, 4]
plt.plot(x2, y2, label='Second Curve')
# 设置每个子图的标题和标签
plt.title('Two Curves in Different Subplots')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.legend()
# 显示整个图形
plt.tight_layout() # 用于调整子图之间的间距,防止文字重叠
plt.show()
```
在这个例子中,我们首先创建了一个2行1列的子图网格,然后分别在第一个和第二个子图上画了两条线。每个子图都有独立的坐标轴和标签。
相关问题
如何在MATLAB中使用subplot函数分割图形窗口,并在同一窗口内绘制具有不同颜色标记的多条二维曲线图?
在MATLAB中使用subplot函数进行图形窗口的分割并绘制多条不同颜色的二维曲线图,首先需要确保你已经熟悉了subplot函数的基本用法。例如,subplot(2,2,1)会将图形窗口分割为2行2列,并激活第一个子图区域。接下来,使用plot函数绘制二维曲线时,可以通过指定样式字符串来控制曲线的颜色和标记。
参考资源链接:[MATLAB绘图教程:详解subplot与多根曲线绘制](https://wenku.csdn.net/doc/7ez0ghinar?spm=1055.2569.3001.10343)
举个例子,假设我们要在同一个图形窗口中绘制三组数据,每组数据由不同颜色的曲线表示。我们可以使用subplot函数将窗口分为一行三列,然后在每个子图区域内分别绘制一条曲线。具体代码如下:
```matlab
x = linspace(0, 2*pi, 100); % 定义x轴数据,从0到2π,共100个点
y1 = sin(x); % 定义第一组y轴数据
y2 = cos(x); % 定义第二组y轴数据
y3 = sin(x).*cos(x); % 定义第三组y轴数据
subplot(1, 3, 1); % 将图形窗口分割为1行3列,并激活第一个子图区域
plot(x, y1, 'r-o'); % 绘制红色的带有圆圈标记的曲线
title('第一条曲线');
subplot(1, 3, 2); % 激活第二个子图区域
plot(x, y2, 'g-s'); % 绘制绿色的带有正方形标记的曲线
title('第二条曲线');
subplot(1, 3, 3); % 激活第三个子图区域
plot(x, y3, 'b-*'); % 绘制蓝色的带有星号标记的曲线
title('第三条曲线');
```
在上述代码中,'r-o'、'g-s'和'b-*'分别是MATLAB中定义颜色和标记的样式字符串,其中'r'、'g'和'b'分别代表红色、绿色和蓝色,'o'、's'和'*'分别代表圆圈、正方形和星号标记。通过这种方式,你可以在同一个图形窗口中绘制具有不同颜色和标记的多条二维曲线图。
参考资源链接:[MATLAB绘图教程:详解subplot与多根曲线绘制](https://wenku.csdn.net/doc/7ez0ghinar?spm=1055.2569.3001.10343)
在同一平面中的两个窗口分别画出心形线和马鞍面代码
心形线代码:
```python
import matplotlib.pyplot as plt
import numpy as np
t = np.linspace(0, 2*np.pi, 1000)
x = 16*np.sin(t)**3
y = 13*np.cos(t) - 5*np.cos(2*t) - 2*np.cos(3*t) - np.cos(4*t)
fig, ax = plt.subplots()
ax.plot(x, y, color='red')
ax.set_aspect('equal')
plt.show()
```
马鞍面代码:
```python
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = np.linspace(-2, 2, 100)
y = np.linspace(-2, 2, 100)
x, y = np.meshgrid(x, y)
z = x**2 - y**2
ax.plot_surface(x, y, z, cmap='viridis')
plt.show()
```
阅读全文