Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在循环中打印地图而不打印以前的点_Python_Loops_Matplotlib - Fatal编程技术网

Python 在循环中打印地图而不打印以前的点

Python 在循环中打印地图而不打印以前的点,python,loops,matplotlib,Python,Loops,Matplotlib,我正试图画出在海里漂流的点。以下代码起作用,但也绘制了以前绘制的所有点: Duration = 6 #hours plt.figure(figsize=(20,10))#20,10 map = Basemap(width=300000,height=300000,projection='lcc', resolution='c',lat_0=51.25,lon_0=-4)#lat_0lon_0 is left under map.drawmapboundary(fill_colo

我正试图画出在海里漂流的点。以下代码起作用,但也绘制了以前绘制的所有点:

Duration = 6 #hours

plt.figure(figsize=(20,10))#20,10
map = Basemap(width=300000,height=300000,projection='lcc',
        resolution='c',lat_0=51.25,lon_0=-4)#lat_0lon_0 is left under
map.drawmapboundary(fill_color='turquoise')
map.fillcontinents(color='white',lake_color='aqua')
map.drawcountries(linestyle='--')

x=[]
y=[]
for i in range (0,Duration):

    x,y = map(Xpos1[i],Ypos1[i])
    map.scatter(x, y, s=1, c='k', marker='o', label = 'Aurelia aurita', zorder=2)
    plt.savefig('GIF10P%d' %i)
Xpos1和Ypos1是屏蔽数组的列表。列表中的每个数组的长度为10,因此每个贴图中应绘制10个点:

 Xpos1=[[latitude0,lat1,lat2,lat3,..., lat9],
       [latitude0,lat1,lat2,lat3,..., lat9],...]
这给了我六个数字,我将向您展示第一个和最后一个:

每张图片都应该有10个点,但最后一张是所有地图的组合(所以是60个点)。 我怎样才能得到6张每张只有10点的地图?

编辑: 当我使用来自的答案时,我得到了错误

ValueError: Can not reset the axes.  You are probably trying to re-use an artist in more than one Axes which is not supported 
当我使用下面的答案时,会弹出一个类似的错误: 即


非常感谢您的帮助

正如@Primusa所说,只要将所有内容移动到for循环中,就可以重新定义地图。 正确的代码是:

for i in range (0,Duration,int(24/FramesPerDay)):
    plt.figure(figsize=(20,10))#20,10
    map = Basemap(width=300000,height=300000,projection='lcc',
          resolution='c',lat_0=51.25,lon_0=-4)#lat_0lon_0 is left under

    map.drawmapboundary(fill_color='turquoise')

    map.fillcontinents(color='white',lake_color='aqua')
    map.drawcountries(linestyle='--')

    x,y = map(Xpos1[i],Ypos1[i])
    map.scatter(x, y, s=1, c='k', marker='o', label = 'Aurelia aurita', zorder=2)

    plt.savefig('GIF10P%d' %i)


更新散点图的数据将有意义,而不是为每个图像绘制新的散点图。优点是地图只需要创建一次,节省了一些时间

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np

Duration = 6 #hours
Xpos1 = np.random.normal(-4, 0.6, size=(Duration,10))
Ypos1 = np.random.normal(51.25, 0.6, size=(Duration,10))

plt.figure(figsize=(20,10))
m = Basemap(width=300000,height=300000,projection='lcc',
        resolution='c',lat_0=51.25,lon_0=-4)
m.drawmapboundary(fill_color='turquoise')
m.fillcontinents(color='white',lake_color='aqua')
m.drawcountries(linestyle='--')

scatter = m.scatter([], [], s=10, c='k', marker='o', label = 'Aurelia aurita', zorder=2)

for i in range (0,Duration):
    x,y = m(Xpos1[i],Ypos1[i])
    scatter.set_offsets(np.c_[x,y])
    plt.savefig('GIF10P%d' %i)

plt.show()

只有最后一张图片是所有地图的组合,还是除第一张以外的所有图片都是以前所有地图的组合?另外,请显示
map
对象(您称之为
scatter
方法)的来源。
scatter
似乎在现有绘图中添加新点。每次保存后,您可能都需要清除或重新创建它。请尝试将for循环之外的内容移动到顶部的for循环中。因为一个小点
map
是一个关键字,所以在为问题添加额外细节之前,请避免使用变量
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np

Duration = 6 #hours
Xpos1 = np.random.normal(-4, 0.6, size=(Duration,10))
Ypos1 = np.random.normal(51.25, 0.6, size=(Duration,10))

plt.figure(figsize=(20,10))
m = Basemap(width=300000,height=300000,projection='lcc',
        resolution='c',lat_0=51.25,lon_0=-4)
m.drawmapboundary(fill_color='turquoise')
m.fillcontinents(color='white',lake_color='aqua')
m.drawcountries(linestyle='--')

scatter = m.scatter([], [], s=10, c='k', marker='o', label = 'Aurelia aurita', zorder=2)

for i in range (0,Duration):
    x,y = m(Xpos1[i],Ypos1[i])
    scatter.set_offsets(np.c_[x,y])
    plt.savefig('GIF10P%d' %i)

plt.show()