如何在大散点图中标记点(~280k 点)
How to label points in a large scatterplot (~280k points)
我有一个包含大约 280,000 个点的散点图,显示效果非常好。但是,我想为每个点添加动态标签,这样当我充分放大图表时,我可以在每个点上看到一些文本。
我试过只在每个点上使用 plt.annotate,并且在较少的点上使用
for index, row in points.iterrows():
plt.annotate(row[0], (row[1], row[2]))
#if index+1 %100 == 0:
# break
这会导致 window 滞后并且实际上不显示任何内容而不是显示标签。如果我取消注释中断,那么我仍然有一个相当滞后的 window 和一大堆重叠的黑色文本。如果文字只能在一定的放大倍率下显示,甚至在不同的放大倍率下缩放到合适的大小就好了!
我真的愿意接受任何从我的数据中创建带标签的散点图的解决方案。
我能够像这样用 plotly 很好地绘制所有内容,使用 plotly 的 Scattergl 来加快一切。
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)
我有一个包含大约 280,000 个点的散点图,显示效果非常好。但是,我想为每个点添加动态标签,这样当我充分放大图表时,我可以在每个点上看到一些文本。
我试过只在每个点上使用 plt.annotate,并且在较少的点上使用
for index, row in points.iterrows():
plt.annotate(row[0], (row[1], row[2]))
#if index+1 %100 == 0:
# break
这会导致 window 滞后并且实际上不显示任何内容而不是显示标签。如果我取消注释中断,那么我仍然有一个相当滞后的 window 和一大堆重叠的黑色文本。如果文字只能在一定的放大倍率下显示,甚至在不同的放大倍率下缩放到合适的大小就好了!
我真的愿意接受任何从我的数据中创建带标签的散点图的解决方案。
我能够像这样用 plotly 很好地绘制所有内容,使用 plotly 的 Scattergl 来加快一切。
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)