我想使用FigureCanvasQTAgg
內的散點圖。散點圖可能有50,000個或更多的數據點。用戶想要在圖中繪製多邊形來選擇多邊形內的數據點。我已經意識到通過點擊鼠標設置點並使用Axis.plot()
將它們與線連接起來。當用戶設置了多邊形的所有點時。每次添加一個新點時,我都會撥打FigureCanvasQTAgg.draw()
來渲染當前版本的情節。這很慢,因爲散點圖有很多數據。 有沒有辦法讓這個更快?我如何使matplotlib繪圖更快地渲染
-1
A
回答
0
兩個可能的解決方案:
- 不顯示的散點圖,但hexbin情節代替。
- 使用blitting。
(如果有人想知道這個答案的質量;介意提問specifially問這種結構的問題,下面的評論。)
+0
有趣的想法,但我確實有不止一種顏色。那怎麼樣:(我把它放在一個單獨的答案中) – Michael
0
我可以嘗試分散轉換使用matplotlib繪製圖像來渲染它並用imshow顯示圖像:
import matplotlib
matplotlib.use('QT4AGG')
import matplotlib.pyplot as plt
import Image # PIL
from io import BytesIO
from matplotlib import image
plt.scatter(xdata, ydata)
plt.axis('off')
plt.subplots_adjust(0, 0, 1, 1, 0, 0)
stream = BytesIO()
plt.savefig(stream, format='raw')
pilImage = Image.fromstring('RGBA',size=(640, 480), data = stream.getvalue())
plt.imshow(image.pil_to_array(pilImage))
您應該在散點圖中繪製數據點之前抽取數據點。如果抽取不可行,那麼您應該只顯示用戶想要繪製多邊形的區域。這應該會加快渲染速度。 – siavashk
有關於[matplotlib「slow」](http://stackoverflow.com/search?q=%5Bmatplotlib%5D+「slow」)和354 [matplotlib「faster」]的409個問題(http://stackoverflow.com /查詢q =%5Bmatplotlib%5D + 「更快」)。他們都沒有幫助嗎?在這種情況下,更具體一點,告訴我們你已經嘗試了什麼,以及爲什麼它沒有幫助。 – ImportanceOfBeingErnest
爲什麼你需要那麼多的數據點?這段代碼的最終目標是什麼? –