Можно ли пройтись по сюжетам фигуры matplotlib? - PullRequest
0 голосов
/ 25 октября 2019

Итак, у меня есть фигура с 16 подзаговорами, 4 столбцами и 4 строками. Для начала я сосредоточился на том, чтобы заставить участок в позиции (0,0) работать должным образом (что я понял!), Прежде чем перейти к тому, чтобы заставить цикл работать должным образом.

Вот где я застрял,Вот как выглядит часть моего кода matplotlib:

new_list = [one, two, three, four, five, six, seven, eight, nine, ten , eleven, twelve, 
    thirteen, fourteen, fifteen, sixteen]
color = ['blue','red']

for name in new_list:
    for row in range(0,subplot_shape[0]):
        for col in range(0,subplot_shape[1]):
            display.plot('total', 
                        currentname=name,
                        subplot_index=(row,col),
                        linestyle='-',
                        marker='.',
                        label="RG",
                        color=color[0])
            display.plot('new_total', 
                        currentname=name,
                        subplot_index=(row,col),
                        linestyle='-',
                        marker='.',
                        label="RG New",
                        color=color[1])
            display.axes[row][col].set_title(name + ' Total on ' + date)
            display.axes[row][col].legend()
            display.axes[row][col].autoscale(tight=False, axis='y')
            display.axes[row][col].set_xlim(xrng)

При том, как я его сейчас настроил, все выводится на каждый подзаговор. Я не уверен, что я делаю не так.

Я бы хотел, чтобы на каждом субплоте было содержимое каждого набора данных, названного в "new_list". (Таким образом, для субплота (0,0) будет набор данных один, для субплота (0,1) будет набор данных два и т. Д.

1 Ответ

1 голос
/ 25 октября 2019

Используйте объектно-ориентированный API: fig, axes = plt.subplots(nrows=4, ncols=4).

Затем вы можете перебирать строки / столбцы, например:

for row, axes_row in enumerate(axes):
    for col, ax in enumerate(axes_row): 
        # do your stuff
        ax.plot(...)
...