我正在尝试制作子图。 我从数据框中调用了许多列,将它们转换为数组并绘制它们。 我想将它们绘制成4行,2列。但我只得到1列(你可以检查图像)。我做错了什么?
这是我的代码:
for column in df3: #I call the dataframe
data=df3[column].values #Turn it into an array
fig = plt.figure()
plt.subplot (4,2,1) #I want 4 rows and 2 columns
ax,_=plot_topomap(data, sensors_pos, cmap='viridis', vmin=0, vmax=100, show=False)
plt.title("KNN" + " " + column) #This is the title for each subplot
fig.colorbar(ax)
plt.show
答案 0 :(得分:1)
有些事情可能会导致代码出现问题,而且在不知道完整代码的情况下很难找到解决方案。
在您的代码中,您可以创建多个数字。但是,你真的想要一个单一的数字。所以这个数字需要在循环之外创建。
然后你想创建子图,所以在每个循环步骤中你需要告诉matplotlib它应该绘制哪个子图。这可以通过ax = fig.add_subplot(4,2,n)
完成,其中n是在循环的每次运行中增加的数字。
接下来,您致电plot_topomap
。但是plot_topomap
如何知道在哪里绘制?您需要通过提供关键字参数axes = ax
来告诉它。
最后尝试设置一个颜色条,返回图像作为轴ax
的参数。
当然我无法测试以下代码,但如果我对所有内容进行了很好的解释,它可能会做你想要的。
n = 1
fig = plt.figure()
for column in df3: #I call the dataframe
data=df3[column].values #Turn it into an array
ax = fig.add_subplot(4,2,n) #I want 4 rows and 2 columns
im,_ = plot_topomap(data, sensors_pos, cmap='viridis', vmin=0, vmax=100, show=False, axes=ax)
ax.set_title("KNN" + " " + column) #This is the title for each subplot
fig.colorbar(im, ax=ax)
n+=1