Matplotlib: подсюжет

У меня есть несколько сигналов временных рядов (8x8), которые я хотел бы построить, используя подзаголовок. Мои данные хранятся в матрице с именем H(x, y, N), где N — количество точек в каждом сигнале. Я хотел бы отобразить 64 сигнала, используя подграфики.

fig  = figure(figsize=(12,8))
time = np.arange(0, Nt, 1)

for x in range(8):
    for y in range(8):
        subplot(8,y+1,x+1)
        plot(time,H[x,y,:])

Я получаю 8 сигналов в первом ряду, 4 во втором, затем 2, 2, 1, 1, 1 и 1.


person Fred    schedule 19.02.2016    source источник


Ответы (1)


Индексация subplot работает иначе. Из документов по subplot:

subplot(nrows, ncols, plot_number)

Где nrows и ncols используются для условного разделения фигуры на nrows * ncols подосей, а plot_number используется для идентификации конкретного подграфика, который эта функция должна создать в условной сетке. plot_number начинается с 1, увеличивается сначала по строкам и имеет максимальное значение nrows * ncols.

Итак, вы хотите иметь nrows=8, ncols=8, а затем plot_number в диапазоне 1-64, так что-то вроде:

nrows,ncols = 8,8
for y in range(8):
    for x in range(8):
        plot_number = 8*y + x + 1
        subplot(nrows,ncols,plot_number)
        plot(time,H[x,y,:])
        
        # Remove tick labels if not on the bottom/left of the grid
        if y<7: gca().set_xticklabels([])
        if x>0: gca().set_yticklabels([])

Чтобы удалить галочки, используйте gca(), чтобы получить текущие оси, и установите xticklabels и yticklabels в пустой список: []

person tmdavison    schedule 19.02.2016
comment
Я искал пример в Интернете, я думаю, я действительно не понял, как это работает. Большое спасибо - person Fred; 19.02.2016
comment
Вы знаете, как удалить значения по оси, потому что у меня так много графиков, что я больше ничего не вижу? - person Fred; 19.02.2016
comment
конечно, вам нужно удалить xticklabels и yticklabels. Попробуйте установить их в пустой список для подграфиков, на которых вы хотите удалить галочки. Смотрите мое редактирование для предложения - person tmdavison; 22.02.2016