Я новичок в Python и в прошлом в основном использовал MatLab. Я переписываю один из своих сценариев MatLab, и мне интересно, как добавить графики к цифрам. Кажется, в python я могу открывать только одну фигуру за раз и должен вручную закрывать окно, прежде чем откроется вторая фигура. Мой первоначальный сценарий состоит из пары сотен строк, но вот MWE того, что я хочу сделать.
import matplotlib.pyplot as plt
import numpy as np
#from mpl_toolkits import mplot3d
lst = [ 1, 1.5, 2, 4.5]
alpha= np.array(lst)
#initialize tables for plots
xtable = []
ytable = []
y2table = []
#determine whether lst is a vector or an array for number of iterations of inner and outer loops
def size(arr):
if len(arr.shape) == 1:
return arr.shape[0], 1
return arr.shape
[nn,mm] = size(alpha)
#create and plot data
for kk in range(nn):#= 1:nn
x = [i for i in range(0, 10)]
y = [alpha[kk]*i for i in range(0, 10)]
y2 = [alpha[kk]*i**2 for i in range(0, 10)]
#data for plot(s)
xtable += [x]
ytable += [y]
y2table += [y2]
#plot1
plt.plot(xtable,ytable)
plt.hold on
#plot2
plt.plot(xtable,y2table)
plt.hold on
В моем сценарии это будут 3D-графики, но я не думаю, что здесь это необходимо. Я просто хочу, чтобы цикл for выполнялся для каждого значения в lst и заканчивался двумя фигурами, каждая из которых имела 4 графика. Размер lst не фиксирован, иначе я бы сгенерировал данные в цикле и построил график позже.
Заранее спасибо за вашу помощь
например две фигуры, каждая с сюжетными линиями 2x2: fig1, axs1 = plt.subplots(2, 2)
и fig2, axs2 = plt.subplots(2, 2)
следите за комментарием tdy:
#create plots:
fig1, ax1 = plt.subplots()
fig2, ax2 = plt.subplots()
#plot data
for kk in range(nn):#= 1:nn
x = [i for i in range(0, 10)]
y = [alpha[kk]*i for i in range(0, 10)]
y2 = [alpha[kk]*i**2 for i in range(0, 10)]
#data for plot(s)
xtable += [x]
ytable += [y]
y2table += [y2]
#plot1
ax1.plot(xtable,ytable)
#plot2
ax2.plot(xtable,y2table)
Интерфейс
plt
имитирует синтаксис Matlab, но (я полагаю) поддерживает работу только с одной фигурой. Вы должны портировать на объектно-ориентированный интерфейс для нескольких рисунков: pyplot против объектно-ориентированного интерфейса