Matplotlib组合绘制大小不同的子图,样式如下: image.png 提交代码及生成图片
时间: 2024-02-29 17:51:25 浏览: 61
以下是一个示例代码,可以生成类似于图片中的图形:
```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)
在2行2列的绘图区域中绘制连线、虚线和点图,要求如下: 1.x为一个数组,在0-2π间,等分成500个元素。 2.在第一位置绘制y=sin(x),实线;第二个位置绘制y=cos(x),红色,虚线;第三个位置绘制y=sin(πx),点线,绿色,宽度为3。第四个位置绘制一个空坐标系。#绘制多个图形并单独显示 import numpy as np import matplotlib.pyplot as plt def level3(): plt.figure(figsize=(10,10)) #**********begin**********# #生成一个数组x,在0-2π间,等分成500个元素。 #y1=sin(x) #y2=cos(x) #y3=sin(πx) #选择第一行第一列图形 #绘制y1=sin(x),用蓝色点线 # 选择第一行第二列图形 #绘制y2=cos(x),红色,虚线 #选择第二行第一列图形 #绘制y3 = sin(πx), 绿色,宽度为3 #选择第二行第二列图形 #**********end**********# #将绘制的图形保存为指定路径下的图片 plt.savefig("task3/image1/t3.png") #显示创建的绘图对象 plt.show()
以下是Python代码实现:
```python
import numpy as np
import matplotlib.pyplot as plt
def level3():
plt.figure(figsize=(10, 10))
# 生成一个数组x,在0-2π间,等分成500个元素。
x = np.linspace(0, 2 * np.pi, 500)
y1 = np.sin(x) # y1=sin(x)
y2 = np.cos(x) # y2=cos(x)
y3 = np.sin(np.pi * x) # y3=sin(πx)
# 选择第一行第一列图形,绘制y1=sin(x),用蓝色点线
plt.subplot(2, 2, 1)
plt.plot(x, y1, c='b', linestyle='-')
plt.title('y=sin(x)')
# 选择第一行第二列图形,绘制y2=cos(x),红色,虚线
plt.subplot(2, 2, 2)
plt.plot(x, y2, c='r', linestyle='--')
plt.title('y=cos(x)')
# 选择第二行第一列图形,绘制y3=sin(πx),绿色,点线,宽度为3
plt.subplot(2, 2, 3)
plt.plot(x, y3, c='g', linestyle=':', linewidth=3)
plt.title('y=sin(πx)')
# 选择第二行第二列图形,绘制空坐标轴
plt.subplot(2, 2, 4)
plt.axis('off')
plt.title('')
# 将绘制的图形保存为指定路径下的图片
plt.savefig("task3/image1/t3.png")
# 显示创建的绘图对象
plt.show()
```
运行代码后,会生成一个2行2列的绘图区域,其中第一位置绘制y=sin(x)的实线图,第二位置绘制y=cos(x)的红色虚线图,第三位置绘制y=sin(πx)的绿色点线图,宽度为3,第四个位置是一个空坐标系。同时,会在指定路径下保存一张名为"t3.png"的图片。如下图所示:
![image](https://user-images.githubusercontent.com/38177269/137625549-fc8c9646-3d9d-4fc7-a675-24b70a8f6d8f.png)
阅读全文