如何用Matplotlib在同一窗口绘制15幅(5行3列)散点图?
如何用Matplotlib在同一窗口绘制5行3列的15幅散点图?
我来帮你把那段代码改成适配你需求的版本,其实核心思路很简单——把原来的图像绘制逻辑替换成散点图,同时调整行列布局就行~
首先,你原来的代码是针对4列5行的图像展示,现在我们要改成3列5行(刚好15个图),然后把生成图像的部分换成散点图需要的x、y数据。下面是完整的可运行代码:
import numpy as np import matplotlib.pyplot as plt # 设置画布大小,5行的话把高度设大一点,显示更清晰 fig = plt.figure(figsize=(12, 15)) columns = 3 # 改成3列,刚好和5行搭配生成15个图 rows = 5 # 循环创建每个子图 for i in range(1, columns * rows + 1): # 生成随机散点数据,你可以把这里换成自己的真实数据集 x = np.random.randn(100) # 100个x轴随机值 y = np.random.randn(100) # 对应y轴的随机值 # 创建子图:参数顺序是(行数, 列数, 当前子图的索引) ax = fig.add_subplot(rows, columns, i) # 绘制散点图,还可以自定义颜色、点大小、透明度等 ax.scatter(x, y, color='darkorange', alpha=0.7, s=30) # 给每个子图加标题,方便区分 ax.set_title(f"散点图 {i}") # 可选:添加坐标轴标签,根据你的数据需求调整 ax.set_xlabel("X 变量") ax.set_ylabel("Y 变量") # 自动调整子图间距,避免标题、标签互相重叠 plt.tight_layout() # 展示所有图 plt.show()
关键修改点说明:
- 调整行列参数:把
columns=4改成columns=3,确保总数量刚好是15 - 替换数据生成逻辑:去掉了原来的图像数组生成,换成散点图需要的x、y一维数组
- 用
ax.scatter()替代图像绘制代码,这是Matplotlib绘制散点图的核心函数 - 加入
plt.tight_layout(),解决多子图布局时元素重叠的问题
你只需要把代码里的随机数据替换成你自己的真实数据,就能直接用啦~
内容的提问来源于stack exchange,提问作者Julio
相关产品推荐
相关产品推荐

