我想读取包含线段的XY端点和与线段关联的值的文件,然后绘制由给定值着色的线段。我遇到的问题是可能会有几十万到几百万的线段,当我试图读取这些较大的文件时,我遇到了内存错误。有没有更高效的内存管理方式?Python - 绘制大量线条
import matplotlib.pyplot as plt
import matplotlib.colors as colors
import matplotlib.cm as cmx
import sys
import csv
if len(sys.argv) > 1:
flofile = sys.argv[1]
else:
flofile = "GU3\GU3.flo"
fig = plt.figure()
ax = fig.add_subplot(111)
jet = cm = plt.get_cmap('jet')
cNorm = colors.Normalize(vmin=0)
scalarMap = cmx.ScalarMappable(norm=cNorm,cmap=jet)
with open(flofile) as FLO:
title = FLO.readline()
limits = [float(tp) for tp in FLO.readline().split()]
FLO.readline()#headers
for line in FLO:
if 'WELLS' in line: break
frac = ([float(tp) for tp in line.split()])
ax.plot([frac[0],frac[2]],[frac[1],frac[3]],color=colorVal)
#ax.plot(*call_list)
scalarMap._A = []
plt.colorbar(scalarMap)
plt.xlim([0,limits[0]])
plt.ylim([0,limits[1]])
plt.show()
此代码适用于小文件。谢谢。
你希望看到什么?要么你的图像是巨大的,所以你可以区分数以百万计的线段,或者你的数百万线段在合理大小的图像上重叠。你可以通过计算类似密度的东西来减少问题的程度,从而将数百万条线段减少到几百或几千个数据点? – Daan
下面是我希望生成的一个例子:[链接](http://s10.postimg.org/gihylk9ih/Fracout_0000.png),这个例子有超过100,000条线段。我真的不能降低密度,因为线的方向以及它与其他线连接的方式如何影响空间位置的值。我有一个过时的Fortran/C++/OpenGL代码,我只是希望更新,并且可能会在程序中添加一个GUI。 – user2236411