仅在按键事件(Matplotlib和Python)后在打印循环中显示下一个打印
下面的代码表示对应于n行文本文件读取的图形的打印。每行包含4列,前三列是(x,y,z)点的坐标,第四列是此打印不需要的二进制变量 在每读取20行时,将读取一个骨架,该骨架是一组20(x、y、z)个点或关节,每个关节由每行的前三列组成 该文本文件包含860行,860/20=43,即20个用于创建(x、y、z)关节骨架的关节数。然后,文本文件由43个骨架组成,生成一个运动。因此,文本文件表示移动 在骨架的打印中,仅使用两个坐标(x,y)生成二维骨架,因此忽略第三个坐标。而且,打印已经在循环中,但按键事件部分尚未实现,在当前画布关闭时打印下一个骨架 我在下面贴了两张连续两张画布的照片。在绘制画布2之前,必须先关闭画布1。我需要将该代码与按键事件相关联,例如:如果按下向右箭头键,则打印下一个骨架,否则,将永远不会显示下一个骨架,但无需关闭画布来打印下一个骨架 第一个绘图画布: 连续绘图的画布,在关闭第一个后显示: 守则:仅在按键事件(Matplotlib和Python)后在打印循环中显示下一个打印,python,matplotlib,canvas,plot,Python,Matplotlib,Canvas,Plot,下面的代码表示对应于n行文本文件读取的图形的打印。每行包含4列,前三列是(x,y,z)点的坐标,第四列是此打印不需要的二进制变量 在每读取20行时,将读取一个骨架,该骨架是一组20(x、y、z)个点或关节,每个关节由每行的前三列组成 该文本文件包含860行,860/20=43,即20个用于创建(x、y、z)关节骨架的关节数。然后,文本文件由43个骨架组成,生成一个运动。因此,文本文件表示移动 在骨架的打印中,仅使用两个坐标(x,y)生成二维骨架,因此忽略第三个坐标。而且,打印已经在循环中,但按键
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()
如果您使用的是windows,您可以尝试使用python windows API来检测按键 pip安装pypiwin32
导入win32api
def按键(按键):
state=win32api.GetAsyncKeyState(ord(键))
如果(状态<0或状态==1):
返回真值
问题到底出在哪里?您是想学点什么,还是想找个人来完成任务?在前一种情况下,把你的任务分成几个小部分,看看你在哪里卡住了。在本例中,了解如何在按下matplotlib中的一个键时让某些事情发生(我想这可以用谷歌搜索)。接下来,了解如何更改代码以实现所发现的内容。如果有问题,试着解决它,或者在这里询问。实际上我使用的是Linux,Ubuntu16.04。Linux Ubuntu是否有等效的API?
import win32api
def keypress(key):
state = win32api.GetAsyncKeyState(ord(key))
if(state < 0 or state == 1):
return True