2
我試圖做一個散點圖〜600萬點,試圖瞭解某種聚類。matplotlib scatter plotting png
當我嘗試在一個簡單的分散命令中做到這一點,matplotlib抱怨過多的內存。所以我決定繪製3000點,然後以.png格式保存圖形,清除圖形,用imread()
加載保存的.png,然後覆蓋下一個3000點。
我正面臨一些填充問題,我不明白他們是如何出現的。我的代碼是有點長,因爲我解析大量的文本文件,但下面是複製我的思維樣品樣機代碼:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
plt.xlim(0,1000)
plt.ylim(-1000,1000)
plt.scatter(400,500,marker="+",c="r")
plt.gca().set_aspect('equal')
plt.draw()
plt.savefig(r"C:\TMP\fig1.png")
plt.clf()
im = plt.imread(r"C:\TMP\fig1.png")
implot = plt.imshow(im, origin='upper', aspect='equal', extent=[0,1000,-1000,1000], zorder=0)
plt.scatter(600,500,marker="+",c="b")
plt.savefig(r"C:\TMP\fig2.png")
plt.close(fig)
的結果是什麼,我不知道如何解釋。很顯然,我不會瞭解imshow()中「aspect」和「extent」之間的關係。有人可以幫助我嗎?
圖1
圖2
我期待既fig1.png
和fig2.png
到在另一個的頂部完全重疊。
謝謝!我會再看看我的腳本。我可能錯過了一些東西,但是使用imshow()加載fig1.png時的填充使我瘋狂。如何解釋爲什麼png沒有完全覆蓋第二個數字?這不是我的意圖,在劇情中得到陰謀...... – kabel
我沒有找出問題所在,但它不是一個好主意。我建議你以不同的方式做。 – Lucas
沒問題,謝謝你的輸入。我試圖解釋的是,如果我想像我原本打算的那樣繪圖 - 保存 - 載入繪圖(一次只繪製3000點),我不想在第二個圖中看到兩組軸。已保存的圖(上圖1)沒有正確縮放,圖2中有兩組座標軸(一個來自PNG,一個來自新創建的座標圖)。有一些填充問題,我不明白它如何使用imshow()。或者我可以根據你的建議修改我的腳本。謝謝。 – kabel