如何使matplotlib绘图渲染更快

时间:2017-03-07 19:40:38

标签: python matplotlib plot pyqt4

我想在FigureCanvasQTAgg内使用散点图。散点图可能有50,000或更多数据点。用户想要在绘图中绘制多边形以选择多边形内的数据点。我已经意识到通过鼠标点击设置点数并使用Axis.plot()将它们连接起来。当用户设置了所有点时,绘制多边形。每次我添加一个新点时,我都会调用FigureCanvasQTAgg.draw()来渲染当前版本的图。这很慢,因为散点图有如此多的数据。 有没有办法让这更快?

2 个答案:

答案 0 :(得分:0)

两种可能的解决方案:

  1. 不要显示散点图,而是显示hexbin图。
  2. 使用blitting。
  3. (如果有人想知道这个答案的质量;请注意提问者在问题下方的评论中特别要求这种结构。)

答案 1 :(得分: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))