Mic*_*dez 4 python for-loop matplotlib subplot
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()
Run Code Online (Sandbox Code Playgroud)
我正在通过 for 循环创建 96 个不同的图形,我希望它也标记图形(即,第一个图形是'Channel 1',图形二'Channel 2'等等。我尝试过ax.set_title但无法弄清楚如何使它与字符串和数字。
此外,我希望将图形打印为 6x16 子图,而不是一列中的 96 个图形。
您每次在 for 循环中都会创建一个新图形,这就是为什么您会得到 96 个图形。我没有你的数据,所以我不能提供最终数字,但以下应该适合你。这里的想法是:
axes包含 6x16 子图的数组。enumerateon逐行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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5614 次 |
| 最近记录: |