Plotly: Как аннотировать фигуру списком строк и списком координат? - PullRequest
1 голос
/ 01 апреля 2020

Я строю определенный список, Z [i, j] длины D, используя matplotlib вместе с аннотацией точек, взятых из другого списка, index_word_map [i], следующим образом:

plt.scatter(Z[:,0], Z[:,1])
for i in range(D):
    plt.annotate(s=index_word_map[i], xy=(Z[i,0], Z[i,1]))
plt.show()

Теперь я хочу сделать то же самое, используя сюжет или сюжет express. Я могу построить точки с помощью plotly express следующим образом:

X = []
Y = []
for i in range(D):
    x = Z[i,0]
    y = Z[i,1]
    X.append(x)
    Y.append(y)
fig = px.scatter(x=X, y=Y)

Но как мне использовать список аннотаций (index_word_map [i]), чтобы метки точек отображались на сюжет тоже?

1 Ответ

0 голосов
/ 01 апреля 2020

Если я правильно понимаю, вы хотели бы добиться чего-то вроде этого:

enter image description here

То, на что вы смотрите, это список D некоторых сюжетных цветовых тем, используемых в качестве аннотаций для точечного графика значений x и y, организованных в виде списка списков Z.

D='Alphabet','Antique','Bold','D3','Dark2','Dark24','G10','Light24','Pastel','Pastel1']

Z=[[0, 0],[1, 2],[2, 4],[3, 6],[4, 8],[5, 10],[6, 12],[7, 14],[8, 16],[9, 18]]

Полный код:

import numpy as np
import plotly.express as px
import plotly.graph_objs as go

# sample data
D='Alphabet','Antique','Bold','D3','Dark2','Dark24','G10','Light24','Pastel','Pastel1']

# sample of two lists
z1 =np.arange(len(D)).tolist()
z2 = [i*2 for i in z1]

# turn two lists into a list of tuples
# containing each element of z1 of z2
# as zipped pairs
tuplist = list(zip(z1, z2))

# turn the list of tuples into list of lists
Z=[list(elem) for elem in tuplist]


# plotly setup
fig = go.Figure(data=go.Scatter(x=z1, y=z2, marker_color='black'))

for i, m in enumerate(D):
    fig.add_annotation(dict(font=dict(color='rgba(0,0,200,0.8)',size=12),
                                        x=Z[i][0],
                                        y=Z[i][1],
                                        showarrow=False,
                                        text=D[i],
                                        textangle=0,
                                        xanchor='left',
                                        xref="x",
                                        yref="y"))
fig.show()

Надеюсь, это то, что вы искали. Не стесняйтесь, дайте мне знать, если нет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...