我正在尝试绘制两个不同的图(一个是由具有色阶的矩阵生成的简单图形),另一个是具有代表骨骼的一组点的x和y轴的图形。矩阵色标与骨架图相关联。每次关闭画布时,必须循环显示n次,然后显示下一个图。
但是我只能一次显示每个图形,例如,我必须每个并排有43个画布,并排有一个图形和一个色标矩阵,相反,我得到了86个图,点图中的一个,比例矩阵的下一个,依此类推。
下面是代码,所以每个图的图片都如此。我正在使用gridspec来生成图形,并使用一个简单的imgplot来生成颜色比例矩阵。
from pylab import *
from matplotlib import gridspec
import numpy as np
import sys
import math
import matplotlib.pyplot as plt
movimento = np.loadtxt("file01.txt")
qtd_posturas = int(len(movimento)/20)
c = 0
lista = []
for i in range(qtd_posturas):
lista.append(movimento[(i*20):((i+1)*20),:3])
matrixCoord = np.array(lista)
matrixDistance= np.zeros((qtd_posturas,20,20))
for k in range(qtd_posturas):
for i in range(len(matrixDistance[0])):
for j in range(len(matrixDistance[0])):
matrixDistance[k,i,j] = np.linalg.norm(matrixCoord[k,i,:] - matrixCoord[k,j,:])
num_plots = qtd_posturas
z = 0
for m in range(num_plots):
img = matrixDistance[m]
imgplot = plt.imshow(img)
imgplot.set_cmap('PuBu')
plt.colorbar()
plt.show()
z += 20
esqueleto = movimento[:z,:2]
x = esqueleto[:,0]
y = -esqueleto[:,1]
gs = gridspec.GridSpec(1, 2, width_ratios=[3, 1])
plt.figure()
plt.subplot(gs[1])
plt.scatter(x,y, s=50)
plt.title('Esqueleto')
plt.show()
图片:
答案 0 :(得分:1)
您需要在循环开始时创建带有子图的图形,然后在各个子图中绘制图形:
for m in range(num_plots):
gs = gridspec.GridSpec(1, 2, width_ratios=[3, 1]) # create figure at start of loop
img = matrixDistance[m]
plt.subplot(gs[0]) # first subplot
imgplot = plt.imshow(img)
imgplot.set_cmap('PuBu')
plt.colorbar()
z += 20
esqueleto = movimento[:z,:2]
x = esqueleto[:,0]
y = -esqueleto[:,1]
plt.subplot(gs[1]) # second subplot
plt.scatter(x,y, s=50)
plt.title('Esqueleto')
plt.show()