我有6个列表,希望能创建出所有可能组合的散点图。这意味着我希望创建n(n-1)/2个组合,即15个图表。根据以下脚本,我已经成功完成了此操作。
for i in d:
for j in d:
if(j>i):
plt.cla() # Clear axis
plt.clf() # Clear figure
correlation_coefficient = str(np.corrcoef(d[i], d[j])[0][1])
plt.scatter(d[i],d[j])
plt.xlabel(names[i])
plt.ylabel(names[j])
plt.title('Correlation Coefficient: '+correlation_coefficient)
plt.grid()
plt.savefig(names[i]+"_"+names[j]+".png")
我想使用subplot将所有这些图保存在一个图中,其中第一行将有组合(0,1) (0,2) (0,3) (0,4) (0,5),第二行为(1,2) (1,3) (1,4) (1,5),第三行为(2,3) (2,4) (2,5),以此类推。
因此,最终的结果将是一个包含三角形子图的图。
更新:
如果我使用subplots(如下所示的代码),我可以得到某种程度上的结果,但它并不是最优的,因为我创建了一个6x6的框架,而你可以使用5x5。
fig = plt.figure()
cnt = 0
# Create scatterplots for all pairs
for i in d:
for j in d:
if(i>=j):
cnt=cnt+1
if(j>i):
cnt += 1
fig.add_subplot(6,6,cnt) #top left
correlation_coefficient = str(np.corrcoef(d[i], d[j])[0][1])
plt.scatter(np.log(d[i]),np.log(d[j]))
fig.savefig('test.png')
plt.subplots
或者gridspec
吗? - tacaswell