matplotlib如何复用已绘独立图内容生成并排对比组合子图
Matplotlib 已完成独立图表的无重绘子图整合
场景说明
在数据可视化实操中,经常会遇到这类需求:
- 前期已经逐张调试完成两张带全量标注的独立matplotlib图表,内容包含折线、轴标签、标题、文本注释等各类可视化元素
- 后续需要将两张图迁移到同一窗口内,并排开展内容对比
如果选择退回初始绘图流程,从头搭建子图结构重新绘制两张图表,会重复编写大量已经验证可用的绘图逻辑,冗余工作量较高。
不少使用者因为不熟悉matplotlib的图窗、坐标轴句柄的运行机制,最初尝试的整合代码往往无法正常运行,典型的参考实现逻辑如下:
from numpy.random import seed from numpy.random import randint import matplotlib.pyplot as plt x = list(range(1, 11)) seed(1) y1 = randint(5, 35, 10) seed(2) y2 = randint(5, 35, 10) seed(3) y3 = randint(5, 35, 10) # 生成第一张独立图表 fig1 = plt.figure(1) ax1 = plt.plot(x, y1, x, y2, x, y3) plt.xlabel('Xaxis') plt.ylabel('yaxis') plt.title('Some Plot') plt.text(10, 10, 'some text') # 生成第二张独立图表 fig2 = plt.figure(2) ax2 = plt.plot(x, y1 + y2 + y3) # 后续需求:将两张图作为子图放到同一窗口展示 fig3 = pltfigure(3) plt.subplot(2, 1, 1) plt.plot(ax1) # 常见错误尝试写法:plt.plot(fig1.lines)、plt.plot(fig1) plt.subplot(2, 1, 2) plt.plot(ax2)
核心诉求:找到一种简易实现方案,能够直接抓取两张独立图中所有已经绘制完成的元素(含线条、轴标签、标题、文本注释等全部内容),无需重复编写绘图逻辑重绘,直接将原有内容映射到新组合图窗的对应子图位置完成展示。
内容的提问来源于stack exchange,提问作者jrive
相关产品推荐
相关产品推荐

