Python 如何标记大型散点图中的点(~280k点)
我有一个大约280000点的散点图,显示得很好。但是,我希望将标签动态添加到每个点,这样当我足够放大图形时,我可以在每个点上看到一些文本 我试着在每个点上使用plt.annotate,并在少量点上使用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 这会导致窗口延迟,实际上不显示任何内容,而不显示标
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看起来会很好。