Matplotlib组合绘制大小不同的子图,样式如下: image.png 提交代码及生成图片
时间: 2024-02-29 16:51:25 浏览: 16
以下是一个示例代码,可以生成类似于图片中的图形:
```python
import matplotlib.pyplot as plt
# 创建画布
fig = plt.figure(figsize=(8, 8))
# 创建第一个子图
ax1 = fig.add_subplot(2, 2, 1)
ax1.plot([1, 2, 3], [4, 5, 6])
ax1.set_title('Subplot 1')
# 创建第二个子图
ax2 = fig.add_subplot(2, 2, 2)
ax2.scatter([3, 2, 1], [4, 5, 6], s=50, c='red')
ax2.set_title('Subplot 2')
# 创建第三个子图
ax3 = fig.add_subplot(2, 1, 2)
ax3.bar([1, 2, 3], [4, 5, 6])
ax3.set_title('Subplot 3')
# 调整子图之间的间距
fig.subplots_adjust(hspace=0.3, wspace=0.3)
# 显示图形
plt.show()
```
生成的图形如下:
![image.png](attachment:image.png)
相关问题
考察知识点: add _ axes ()绘制多子图 使用 add _ axex ()方式,按如下要求绘制两个子图 请在满足要求的同时尽可能的美化图表,子图样式请大家尽情发挥需要满足以下条件: 1.绘制两个子图,一个在左上角,一个在右下角2.为每个子图图表设置中文表名 3.为每个子图图表设置线条样式虚线 4.为每个子图图表设置线条上点形状圆圈 5.为每个子图图表修改线上点大小1 6.为每个子图图表设置线条颜色绿色 7.为每个子图图表设置网格线 8.为每个子图图表设置图例
代码实现如下:
```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, ax1 = plt.subplots()
ax1.plot(x, y1, '--o', color='green', markersize=4)
ax1.set_xlabel('时间/s')
ax1.set_ylabel('振幅')
ax1.set_title('正弦波')
# 设置网格线和图例
ax1.grid()
ax1.legend(['正弦波'], loc='upper left')
# 绘制第二个子图
ax2 = ax1.twinx()
ax2.plot(x, y2, '--o', color='green', markersize=4)
ax2.set_ylabel('振幅')
ax2.set_title('余弦波')
# 设置网格线和图例
ax2.grid()
ax2.legend(['余弦波'], loc='lower right')
# 调整布局
plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1)
plt.show()
```
结果如下图所示:
![image.png](attachment:image.png)
使用matplotlib怎么在一张图片中绘制两个不重叠的正弦函数,他们的水平线不同
可以使用`subplot`方法在同一张图片中创建两个不重叠的子图,并在每个子图中绘制一个正弦函数。
下面是一个示例代码:
```python
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 4*np.pi, 100)
y1 = np.sin(x)
y2 = np.sin(x - np.pi/2)
# 创建画布和子图
fig, (ax1, ax2) = plt.subplots(2, 1)
# 在第一个子图中绘制正弦函数
ax1.plot(x, y1)
ax1.set_title('sin(x)')
# 在第二个子图中绘制正弦函数
ax2.plot(x, y2)
ax2.set_title('sin(x - pi/2)')
# 设置子图之间的间距
fig.subplots_adjust(hspace=0.5)
# 显示图像
plt.show()
```
运行以上代码,即可在一张图片中绘制两个不重叠的正弦函数,它们的水平线不同。效果如下图所示:
![image.png](attachment:image.png)