Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.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 如何标记大型散点图中的点(~280k点)_Python_Matplotlib_Bigdata_Scatter Plot - Fatal编程技术网

Python 如何标记大型散点图中的点(~280k点)

Python 如何标记大型散点图中的点(~280k点),python,matplotlib,bigdata,scatter-plot,Python,Matplotlib,Bigdata,Scatter Plot,我有一个大约280000点的散点图,显示得很好。但是,我希望将标签动态添加到每个点,这样当我足够放大图形时,我可以在每个点上看到一些文本 我试着在每个点上使用plt.annotate,并在少量点上使用 for index, row in points.iterrows(): plt.annotate(row[0], (row[1], row[2])) #if index+1 %100 == 0: # break 这会导致窗口延迟,实际上不显示任何内容,而不显示标

我有一个大约280000点的散点图,显示得很好。但是,我希望将标签动态添加到每个点,这样当我足够放大图形时,我可以在每个点上看到一些文本

我试着在每个点上使用plt.annotate,并在少量点上使用

for index, row in points.iterrows():
    plt.annotate(row[0],  (row[1], row[2]))
    #if index+1 %100 == 0:
    #    break
这会导致窗口延迟,实际上不显示任何内容,而不显示标签。如果我取消对中断的注释,那么我仍然有一个相当滞后的窗口,窗口中有一大块黑色的重叠文本。如果文本只能在一定的放大倍数下显示,或者甚至在不同的放大倍数下缩放到合适的大小,那就太好了


我非常愿意使用任何解决方案从我的数据中创建带标签的散点图。

我能够像这样用plotly很好地绘制所有内容,使用plotly可以加快速度

import plotly as plotly
py = plotly.offline
import plotly.graph_objs as go

trace = go.Scattergl(
    x = points['x'], 
    y = points['y'],
    text = points['word'], 
    mode = 'markers',
    marker = dict(
        color = '#FFBAD2',
        line = dict(width = 1)
    )
)

data = [trace]
layout = plotly.graph_objs.Layout(hovermode='closest')
figure = plotly.graph_objs.Figure(data=data, layout=layout)
py.plot(figure)

我不确定Matplotlib是否适合这项工作。这种动态调整听起来更像是Javascript图形框架。如果您想继续使用Python,可以详细了解一下框架。我认为这个互动功能是受支持的。但我不确定它如何处理280k数据点可能会有点慢…Matplotlib可能是这项工作的基础工具,但它的缩放自适应部分将使用自定义GUI完成。您还可以让xy_坐标显示弹出光标下的值。您在问题中没有说您想要悬停解决方案,但使用matplotlib看起来会很好。