【发布时间】:2018-07-10 20:17:21
【问题描述】:
我正在尝试绘制两个不同的图(一个是由具有色标的矩阵生成的简单图形),另一个是具有来自一组代表骨架的点的 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()
图片:
【问题讨论】:
-
在
for循环中,您通过plt.figure()在每次迭代中创建一个新图形。为什么要这么做?这会将您带到一个新数字,因此您将获得两倍的迭代次数。此外,在查看绘图时,轴比例不匹配,因此您将无法将它们安装在同一轴上。您需要创建新轴或重新调整其中一个轴以适合现有轴。 -
这就是我遇到的问题,我不知道如何正确重新配置它。
-
你不要在图中用子图绘制
imshow图像...
标签: python matplotlib plot