私はPythonとプログラミングが初めてです。Pythonを使用して方向マップをプロットしようとしています。平面上に多数のポイント (約 1,200,000) があり、それぞれがクラスターに属しています。各クラスターは異なる色であると想定されています。私が現在行っているのは、各クラスターに色を割り当て、各ポイントに塗りつぶされた円を描くことです。さまざまなセグメントのプロットを作成し、ブレンドを使用してそれらを結合することで、部分的に実行しようとしました. これはパーツのコードです: (sn は点の総数、label はクラスター番号のクラスター配列、xcoor と ycoor は点の座標です)
pylab.xlim([0,250])
pylab.ylim([0,100])
plt.savefig("HK pickle.png")
for l in range (1, 20):
for j in range(int((float(sn)/80)*(l-1)), int((float(sn)/80)*(l))):
overlay = Image.open("HK pickle.png")
c = label[j] % 8
if c == 0:
circle1 = plt.Circle((float(xcoor[j]), float(ycoor[j])), 0.05, color = (0.5, 0, 0))
elif c == 1:
circle1 = plt.Circle((float(xcoor[j]), float(ycoor[j])), 0.05, color = (1, 0, 0))
elif c == 2:
circle1 = plt.Circle((float(xcoor[j]), float(ycoor[j])), 0.05, color = (0, 0.5, 0))
elif c == 3:
circle1 = plt.Circle((float(xcoor[j]), float(ycoor[j])), 0.05, color = (0, 1, 0))
elif c == 4:
circle1 = plt.Circle((float(xcoor[j]), float(ycoor[j])), 0.05, color = (0, 0, 0.5))
elif c == 5:
circle1 = plt.Circle((float(xcoor[j]), float(ycoor[j])), 0.05, color = (0, 0 ,1))
elif c == 6:
circle1 = plt.Circle((float(xcoor[j]), float(ycoor[j])), 0.05, color = (0.5, 0.5 ,0))
elif c == 7:
circle1 = plt.Circle((float(xcoor[j]), float(ycoor[j])), 0.05, color = (0.5, 0 ,0.5))
fig = plt.gcf()
fig.gca().add_artist(circle1)
del circle1
plt.savefig("HK pick.png")
del fig
back = Image.open("HK pick.png")
comp = Image.blend(back, overlay, 0.5)
comp.save("HK pickle.png", "PNG")
del comp
pylab.xlim([0,250])
pylab.ylim([0,100])
plt.savefig("HK plots.png")
ただし、これにより次のエラーが発生します。
fig.gca().add_artist(circle1)
File "C:\Python27\lib\site-packages\matplotlib\axes.py", line 1404, in add_artist
self.artists.append(a)
MemoryError
エラーは l = 11 で発生します。タスク マネージャーを並行してチェックし続けましたが、MemoryError が表示されたとき、まだ 3GB 近くの空きメモリがありました。これで私を助けてください。
私はこれに不慣れで、私が提供した情報が十分かどうかまだわかりません。さらに情報が必要な場合はお知らせください