gpt4 book ai didi

python - 无论如何要在 python 中快速绘制多条线?如果可能,首选 Matplotlib

转载 作者:太空宇宙 更新时间:2023-11-04 10:01:42 25 4
gpt4 key购买 nike

我有一个 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')

我需要使用非交互式后端,因为此代码将位于服务器中。我试着只画一张 map 。它已经花费了 15 分钟并且尚未完成。有什么提高速度的想法吗?我知道 matplotlib 不是为大型数据集可视化而设计的,但我的数据集少于 1M 点。有什么想法可以提高它的性能吗?如果推荐其他库,我应该使用哪个?至少它必须让我渲染线条并改变图形大小。

最佳答案

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 指出我的代码的缺点。

关于python - 无论如何要在 python 中快速绘制多条线?如果可能,首选 Matplotlib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43216111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com