#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())
Вывод: