[英]Can matplotlib only update the newest point to the figure?
matplotlib是否有可能只更新最新的数字而不是重新绘制整个数字?
例如:这可能是动态绘图的最快方式
initiate:
fig1 = Figure(figsize = (8.0,8.0),dpi = 100)
axes1 = fig1.add_subplot(111)
line1, = axes1.plot([],[],animated = True)
when new data is coming:
line1.set_data(new_xarray,new_yarray)
axes1.draw_artist(line1)
fig1.canvas.update()
fig1.canvas.flush_events()
但这将重新绘制整个数字! 我认为这是否可行:
when new data is coming:
axes1.draw_only_last_point(new_x,new_y)
update_the_canvas()
它只会将这个新点(new_x,new_y)添加到轴而不是重新绘制每个点。
如果您知道python的哪个图形库可以做到这一点,请回答或评论,非常感谢!!!!!
真的很感谢你的帮助!
这是我(迄今为止)的一点经验。
我在几个月前开始使用Python(2.x)和openCV(2.4.13)作为图形库。我发现可能首先预测openCV for python的工作方式与matplotlib一样多,并且(略有不同)它们可以工作一起。
在某些条件之后我不得不更新一些像素。 我首先使用opencv从图像中进行了详细说明,获得了一个numpy 2D数组,就像一个矩阵。 诀窍是:opencv主要将输入视为图像,首先是X作为宽度,然后是Y作为高度。 numpy结构希望行和列实际上是X之前的Y.
考虑到这一点,我逐个像素地更新了图像矩阵A并再次用色彩图绘制它
import matplotlib as plt
import cv2
A = cv2.imread('your_image.png',0) # 0 means grayscale
# now you loaded an image in a numpy array A
for every new x,y pixel
A[y,x] = new pixel intensity value
plot = plt.imshow(A, 'CMRmap')
plt.show()
如果您想再次拍摄图片,请考虑使用此图片
import matplotlib.image as mpimg
#previous code
mpimg.imsave("newA.png", A)
如果你想使用颜色,请记住颜色的图像是X乘Y 3 numpy数组,但matplotlib有RGB作为正确的通道顺序,openCv使用BGR顺序。 所以
C = cv2.imread('colour_reference.png',1) # 1 means BGR
A[y,x,0] = newRedvalue = C[y,x][2]
A[y,x,1] = newGreenvalue = C[y,x][1]
A[y,x,2] = newBluevalue = C[y,x][0]
我希望这会以某种方式帮助你
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.