我想讀取包含線段的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