如何在每次迭代时更新 matplotlib pyplot
How to update matplotlib pyplot on every iteration
我正在使用 rospy 获取机器人位置数据并实时绘制。
这是我的:
self.plot_pose()
def plot_pose(self):
plt.plot(self.pose[0], self.pose[1], 'o', color='green')
plt.plot([self.pose[0], self.pose[0] - 0.5*np.cos(self.pose[2])],
[self.pose[1], self.pose[1] + 0.5*np.sin(self.pose[2])],
'k-', color='red', lw=2)
plt.show(block=False)
plt.pause(0.0001)
不幸的是,这并没有删除情节,而是覆盖了所有内容。所以
我尝试使用
plt.clf()
plt.cla()
第一个给我弃用错误,第二个出于某种原因给了我一个空白图。我正在使用 python2.7 和 rospy 库。
如有任何关于如何更新剧情的建议,我们将不胜感激。
这与通常的动画相同。尽量避免每次交互都创建新图,而是更新旧图。
self.point, = plt.plot([],[], 'o', color='green')
self.line, = plt.plot([],[], ls="-", color='red', lw=2)
plt.show(block=False)
self.plot_pose()
def plot_pose(self):
self.point.set_data(self.pose[0], self.pose[1])
self.line.set_data([self.pose[0], self.pose[0] - 0.5*np.cos(self.pose[2])],
[self.pose[1], self.pose[1] + 0.5*np.sin(self.pose[2])])
plt.pause(0.0001)
如果点在绘图的范围之外,您可能需要调整绘图的范围(plt.xlim()
、plt.ylim()
)。
我正在使用 rospy 获取机器人位置数据并实时绘制。
这是我的:
self.plot_pose()
def plot_pose(self):
plt.plot(self.pose[0], self.pose[1], 'o', color='green')
plt.plot([self.pose[0], self.pose[0] - 0.5*np.cos(self.pose[2])],
[self.pose[1], self.pose[1] + 0.5*np.sin(self.pose[2])],
'k-', color='red', lw=2)
plt.show(block=False)
plt.pause(0.0001)
不幸的是,这并没有删除情节,而是覆盖了所有内容。所以 我尝试使用
plt.clf()
plt.cla()
第一个给我弃用错误,第二个出于某种原因给了我一个空白图。我正在使用 python2.7 和 rospy 库。
如有任何关于如何更新剧情的建议,我们将不胜感激。
这与通常的动画相同。尽量避免每次交互都创建新图,而是更新旧图。
self.point, = plt.plot([],[], 'o', color='green')
self.line, = plt.plot([],[], ls="-", color='red', lw=2)
plt.show(block=False)
self.plot_pose()
def plot_pose(self):
self.point.set_data(self.pose[0], self.pose[1])
self.line.set_data([self.pose[0], self.pose[0] - 0.5*np.cos(self.pose[2])],
[self.pose[1], self.pose[1] + 0.5*np.sin(self.pose[2])])
plt.pause(0.0001)
如果点在绘图的范围之外,您可能需要调整绘图的范围(plt.xlim()
、plt.ylim()
)。