перерисовка существующих фигур в новом дополнительном блоке в matplotlib

#matplotlib #subplot

#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)

# later, I say decided I wanted to also display the two plots as subplots in the same window.
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)
 

Я ищу простой способ захватить все содержимое, уже отображенное на рисунках 1 и 2, и передать его непосредственно на подзаголовки на рисунке 3.

Ответ №1:

Каждый ax1 и ax2 в вашем коде представляет собой список Line2D . Вы можете извлечь данные строк с .get_data() помощью и построить:

 # later, I say decided I wanted to also display the two plots as subplots in the same window.
fig3=plt.figure(3)
plt.subplot(2,1,1)
for line in ax1:
    plt.plot(*line.get_data())
plt.subplot(2,1,2)
for line in ax1:
    plt.plot(*line.get_data())
 

Вывод:

введите описание изображения здесь