Как я могу добавить новые графики к существующим фигурам?

Я новичок в 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 не фиксирован, иначе я бы сгенерировал данные в цикле и построил график позже.

Заранее спасибо за вашу помощь

Интерфейс plt имитирует синтаксис Matlab, но (я полагаю) поддерживает работу только с одной фигурой. Вы должны портировать на объектно-ориентированный интерфейс для нескольких рисунков: pyplot против объектно-ориентированного интерфейса

tdy 18.03.2022 22:04

например две фигуры, каждая с сюжетными линиями 2x2: fig1, axs1 = plt.subplots(2, 2) и fig2, axs2 = plt.subplots(2, 2)

tdy 18.03.2022 22:06
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
37
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

следите за комментарием 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)

Другие вопросы по теме