我写了一个用于数据分析的python脚本。结果是一个图中有多个散点图。 Everythink工作正常,但由于过于复杂,我重构了脚本并使用多种方法构建了一个类,以使其更简单并获得更好的概述。但是现在我的一个散射不再被绘制,我无法弄清楚为什么。代码几乎完全相同。只需分成几种方法。代码如下所示:
def _setup_plot_window(self):
t1 = time.time()
ax = self.ax
P = self.P
Proj = self.Proj
GM = self.GM
ax.set_xlim(Proj.west_most_longitude - self.BORDER_MARGIN,
Proj.east_most_longitude + self.BORDER_MARGIN)
ax.set_ylim(Proj.south_most_latitude - self.BORDER_MARGIN,
Proj.north_most_latitude + self.BORDER_MARGIN)
paths_xy = []
for p in self.paths:
p_xy = [Proj.project_to_xy(x[0], x[1]) for x in p]
paths_xy.append(p_xy)
tram_stops_X = []; tram_stops_Y = []
for i, coord_name in self.trams.iteritems():
lat, lon, n = coord_name
tram_stops_X.append(lon)
tram_stops_Y.append(lat)
plt.text(lon, lat, n, fontsize=10, clip_on=True)
for p in paths_xy:
y = map(lambda x:x[0], p)
x = map(lambda x:x[1], p)
line = Line2D(x, y, lw=1, color='g')
ax.add_line(line)
line_top = Line2D([GM.lon_max, GM.lon_max], [GM.lat_min, GM.lat_max], c='g', linestyle = '--', lw=1)
line_bottom = Line2D([GM.lon_min, GM.lon_min], [GM.lat_min, GM.lat_max], c='g', linestyle = '--', lw=1)
line_left = Line2D([GM.lon_min, GM.lon_max], [GM.lat_min, GM.lat_min], c='g', linestyle = '--', lw=1)
line_right = Line2D([GM.lon_min, GM.lon_max], [GM.lat_max, GM.lat_max], c='g', linestyle = '--', lw=1)
ax.add_line(line_top)
ax.add_line(line_bottom)
ax.add_line(line_left)
ax.add_line(line_right)
ax.scatter(tram_stops_X, tram_stops_Y, c='r', marker='x')
xp, yp = separate_particles_in_list(P.particles)
plot_particles, = ax.plot(xp, yp, c='b', marker='o', linestyle='None')
#ax.scatter(xp, yp, c='b', marker='o')
plt.show()
print 'Time "Setup plot window": ', (time.time()-t1) / 60, ' min'
在代码末尾附近有两个ax.scatter(...)。第一个是绘制的,第二个是不绘制的。我也用ax.plot(...)尝试了xp,yp数据但是也没有画出来。我在调试器中检查了xp,yp,它们完全是数据填充。
有人知道出了什么问题吗?