在同一图中使用Matplotlib更新图

时间:2018-12-13 12:50:11

标签: python matplotlib

我是Python的新手(如果我所拥有的东西拼凑不好,请提前道歉),我试图制作一个图形,绘制从网站上提取的坐标变化时坐标的地图背景图像。我已将其全部绘制到在地图上绘制坐标的位置,但是无法让MatPlotLib刷新同一图中的绘图。目前,它只是关闭并每5秒钟重新绘制一个新图形。我尝试了许多不同的解决方案,包括plt.draw(),但无法使其与我目前使用的解决方案一起使用。

from lxml import html
import requests
import time
import numpy as np
import matplotlib.pyplot as plt

----------------------------------------

request = requests.get('url with coordinates')

while request.status_code == 200:

    page = requests.get('url with coordinates')
    tree = html.fromstring(page.content)
    coord = tree.xpath('string(/html/body/text()[30])')

    longlat = coord[13:]

    Longitude = longlat.split(',')[0]
    ['longitude', 'latitude']

    Latitude = longlat.split(', ')[1]
    ['longitude', 'latitude']

-----------------------------------------

    img = plt.imread("backgroundmap.png")
    fig, ax = plt.subplots()

    ax.imshow(img, extent=[min and max coordinates])
    plt.axis([min and max coordinates])


    plt.plot(Latitude, Longitude , 'ro')
    plt.axis('off')

    plt.show(block=False)

    time.sleep(5)
    plt.close()

是否有一种简单的方法可以更改上面的内容,使其重新绘制同一图1上的坐标图,而不是关闭并制作一个新图?谢谢

1 个答案:

答案 0 :(得分:0)

您可以从.set_data()对象中使用Line2D

这里有个例子:

fig,ax = plt.subplots()
P = ax.plot(range(5),[0,2,8,3,0])

哪个返回:

enter image description here

然后使用以下命令从绘制的线更新数据:

P[0].set_data(range(5),[0,1,2,3,4])

将数字更改为:

enter image description here