首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >仅在按键事件后显示绘图循环中的下一个绘图(Matplotlib和Python)

仅在按键事件后显示绘图循环中的下一个绘图(Matplotlib和Python)
EN

Stack Overflow用户
提问于 2018-07-24 03:36:39
回答 1查看 390关注 0票数 0

下面的代码表示了一个图形的绘制,该图形对应于读取一个n行的文本文件。每行包含4列,前三列是(x,y,z)点的坐标,第四列是此绘图不需要的二进制变量。

每读取20行,就读取一个骨架,该骨架是一组20 (x,y,z)点或关节,每个关节由每行的前三列组成。

文本文件包含860行,860/20 = 43,即创建(x,y,z)关节骨架的关节数为20。然后,文本文件由43个骨架组成,生成一个运动。因此,该文本文件表示一个运动

在绘制骨架时,只采用两个坐标(x,y)来生成2D骨架,因此忽略了第三个坐标。并且,绘图已经在循环中,但按键事件部分尚未实现,当当前画布关闭时,将绘制下一个骨架。

我已经在下面发布了两张连续两张画布的照片。在绘制画布二之前,必须先关闭画布一。我需要将该代码与一个按键事件相关联,例如:如果按下右箭头键,则绘制下一个骨架,否则,永远不会显示下一个骨架,但不必通过close a canvas来绘制下一个骨架。

第一个绘图画布:https://i.stack.imgur.com/XxsNZ.png

连续绘图的画布,在关闭第一个后显示:https://i.stack.imgur.com/a1P8L.png

代码:

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np

movement = np.loadtxt("file01.txt")
bone_list = [[1, 3], [2, 3], [3, 4], [4, 7], [5, 7], [6, 7], [1, 8], [2, 9], [8, 10], [9,     11], [10, 12], [11, 13], [5, 14], [6, 15], [14,     16], [15, 17], [16, 18], [17, 19], [3, 20]]
bone_list = np.array(bone_list) - 1
number_of_postures = int(len(movement)/20)

for i in range(number_of_postures):
  fig, ax = plt.subplots(1, figsize=(3, 8))
  plt.title('Skeleton')
  plt.xlim(100, 180)
  plt.ylim(-250, 0)
  skeleton = movement[i*20:(i+1)*20]
  x = skeleton[:, 0]
  y = -skeleton[:, 1]
  sc = ax.scatter(x, y, s=40)
  for bone in bone_list:
     ax.plot([x[bone[0]], x[bone[1]]],  [y[bone[0]], y[bone[1]]], 'r')
plt.show()
EN

回答 1

Stack Overflow用户

发布于 2018-07-24 08:23:00

如果你使用的是windows,你可以尝试使用python windows API来检测按键。

pip安装pypiwin32

代码语言:javascript
复制
import win32api

def keypress(key):
    state = win32api.GetAsyncKeyState(ord(key))
    if(state < 0 or state == 1):
        return True
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51486099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档