Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使matplotlib打印渲染更快_Python_Matplotlib_Plot_Pyqt4 - Fatal编程技术网

Python 如何使matplotlib打印渲染更快

Python 如何使matplotlib打印渲染更快,python,matplotlib,plot,pyqt4,Python,Matplotlib,Plot,Pyqt4,我想在图CANVASQTAGG中使用散点图。散点图可能有50000个或更多数据点。用户希望在绘图中绘制多边形,以选择多边形内的数据点。我已经意识到,通过鼠标点击设置点,并使用Axis.plot()将点与线连接。用户设置完所有点后,将绘制多边形。每次添加新点时,我都会调用FigureCanvasQTAgg.draw(),以渲染当前版本的绘图。这很慢,因为散点图有太多数据。 有没有办法加快速度?两种可能的解决方案: 不要显示散点图,而是hexbin图 使用blitting (如果有人怀疑此答案的质量

我想在
图CANVASQTAGG
中使用散点图。散点图可能有50000个或更多数据点。用户希望在绘图中绘制多边形,以选择多边形内的数据点。我已经意识到,通过鼠标点击设置点,并使用
Axis.plot()
将点与线连接。用户设置完所有点后,将绘制多边形。每次添加新点时,我都会调用
FigureCanvasQTAgg.draw()
,以渲染当前版本的绘图。这很慢,因为散点图有太多数据。
有没有办法加快速度?

两种可能的解决方案:

  • 不要显示散点图,而是hexbin图
  • 使用blitting

  • (如果有人怀疑此答案的质量,请注意提问者在问题下方的评论中明确要求提供这种结构。)

    我可以尝试使用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))
    

    在散点图中绘制数据点之前,应先将其抽取。如果无法进行抽取,则应仅显示用户希望绘制多边形的区域。这将加快渲染速度。共有409个问题,354个问题。它们都没有帮助吗?在这种情况下,请更具体地告诉我们您尝试了什么以及为什么没有帮助。为什么您需要那么多数据点?这段代码的最终目标是什么?@MohammadAthar目标是删掉某些要点,并将提醒写入文件。通过目视检查最容易做到这一点。不提供必要的代码和不缩小问题范围只会降低获得满意答案的机会。最后,这是你的选择。就我个人而言,我发现写一个完整的最小的例子并自己做研究是非常不令人满意的,因此在解决方案上比提问者花费更多的时间。有趣的想法,但我确实有不止一种颜色。怎么样:(我把它放在另一个答案里)