Как маркировать точки на большом графике рассеяния (~ 280 тыс. Точек) - PullRequest
0 голосов
/ 14 января 2019

У меня есть диаграмма рассеяния с около 280 000 точек, которая довольно неплохо отображается. Тем не менее, я хотел бы динамически пометить каждую точку, чтобы при достаточном увеличении графика я мог видеть немного текста в каждой точке.

Я пытался использовать plt.annotate для каждой точки и для меньшего количества точек

for index, row in points.iterrows():
    plt.annotate(row[0],  (row[1], row[2]))
    #if index+1 %100 == 0:
    #    break

Это заставляет окно зависать и фактически не отображать ничего, кроме отображения меток. Если я раскомментирую разрыв, то у меня все еще будет довольно медленное окно с большим чёрным скоплением перекрывающегося текста. Если бы текст можно было отображать только при определенном уровне увеличения или даже масштабировать до соответствующего размера при разных уровнях увеличения, это было бы здорово!

Я действительно открыт для любых решений по созданию помеченного точечного графика из моих данных.

1 Ответ

0 голосов
/ 14 января 2019

Я был в состоянии построить все красиво с помощью plotly, как это, используя Scattergl 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)
...