我有一个geoJson文件。一个JSON类型的文件,它有93k行的许多点(387k)坐标。我想知道是否可以快速使用python将所有这些线条绘制成图形,因为我需要在不同的时间间隔创建许多热图。
目前我正在使用matplotlib
import matplotlib
matplotlib.use('Agg')
from matplotlib import pyplot as plt
# draw road network
# roadSegs structure: {road_segment1:[[line1_x, line1_y],...],...}
figure, ax = plt.subplots(1, 1)
ax.set_xlim(x_min - 100.0, x_max + 100.0)
ax.set_ylim(y_min - 100.0, y_max + 100.0)
for feature_id, lines in roadSegs.iteritems():
for line in lines:
ax.plot(line[0], line[1])
plt.savefig('road.png')
我需要使用非交互式后端,因为此代码将在服务器中。我试着画一张地图。它已经用了15分钟而还没完成。有什么想法提高速度吗?我知道matplotlib不是为大型数据集可视化而设计的,但我的数据集不到1M点。有什么想法改善它的表现吗?如果推荐其他库,我应该使用哪一个?至少它必须让我渲染线条并改变图形大小。
答案 0 :(得分:4)
pyplot tutorial下有一个部分用于绘制多条线,只需要执行pyplot.plot(line1_x,line1_y,line2_x,line2_y,...)。我只需更改代码一次调用ax.plot():
figure, ax = plt.subplots(1, 1)
ax.set_xlim(x_min - 100.0, x_max + 100.0)
ax.set_ylim(y_min - 100.0, y_max + 100.0)
drawLines = []
for feature_id, lines in roadSegs.iteritems():
for line in lines:
drawLines.append(line[0])
drawLines.append(line[1])
ax.plot(*drawLines)
plt.savefig('road.png')
现在有效。花大约4分钟画出我的公路网。感谢@ImportanceOfBeingErnest指出我的代码的底部。