Измените заголовки в цикле for для plt.plot и создайте 6x16 вспомогательных участков - PullRequest
1 голос
/ 11 марта 2019
secondHold = np.zeros((96,30))

channel = ['channel' for x in range(96)]


for i in range (96):
    BlankBinsx = bins[blankposition,0:30,i]
    StimBinsx = bins[NonBlankPositions,0:30,i]
    meanx = BlankBinsx.mean(axis=0);
    stimmeanx = StimBinsx.mean(axis=0);
    for j in range(30):
        hold[i][j] = meanx[j];
        secondHold[i][j] = stimmeanx[j];
    plt.subplots(1, 1, sharex='all', sharey='all')
    plt.plot(hold[i], label='stimulus')
    plt.plot(secondHold[i], label='Blank Stimulus')
    plt.title('Channel x')
    plt.xlabel('time (ms)')
    plt.ylabel('Avg Spike Rate')
    plt.legend()
    plt.show()

Я создаю 96 различных графиков через цикл for, и я хочу, чтобы он также помечал графики (т. Е. Первый график был бы 'Channel 1', график два 'Channel 2' и т. Д. Я пытался ax.set_title, но не могу понять, как заставить его работать со строкой и числами.

Также я бы хотел, чтобы графики печатались в виде подзаговоров 6x16 вместо 96 графиков в столбце.

1 Ответ

2 голосов
/ 11 марта 2019

Вы создаете новую фигуру каждый раз в цикле for, поэтому вы получаете 96 фигур.У меня нет ваших данных, поэтому я не могу предоставить окончательную цифру, но следующее должно работать для вас.Идея здесь такова:

  • Определить фигуру и массив axes, содержащий 6x16 вспомогательных участков.
  • Использовать enumerate на axes.flatten для итерации по подфигурам axдля строк и используйте i в качестве индекса для доступа к данным.
  • Используйте спецификатор поля %d, чтобы итеративно пометить вспомогательные участки.
  • Поместить plt.show() за пределы для цикла

secondHold = np.zeros((96,30))
channel = ['channel' for x in range(96)]

fig, axes = plt.subplots(nrows=6, ncols=16, sharex='all', sharey='all')

for i, ax in enumerate(axes.flatten()):
    BlankBinsx = bins[blankposition,0:30,i]
    StimBinsx = bins[NonBlankPositions,0:30,i]
    meanx = BlankBinsx.mean(axis=0);
    stimmeanx = StimBinsx.mean(axis=0);
    for j in range(30):
        hold[i][j] = meanx[j];
        secondHold[i][j] = stimmeanx[j];
    ax.plot(hold[i], label='stimulus')
    ax.plot(secondHold[i], label='Blank Stimulus')
    ax.set_title('Channel %d' %i)
    ax.set_xlabel('time (ms)')
    ax.set_ylabel('Avg Spike Rate')
    ax.legend()
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...