我正在绘制由堆积的子图组成的图,每个子图具有非常多的点。对于每个点,我想在工具提示中添加要显示的文本。
由于要显示的文本对于每个子图都是相同的,我刚刚传递了与每个子图的text
属性相同的数组(如Plotly指南中所示)。
for cluster in sorted(reverse_clustering):
....
trace = go.Scatter(x=base, y=cluster_features, name=name, text=word_list)
然而,这似乎是在每个子图的html文件中创建(非常长的)字符串数组word_list
的副本。
如果没有html中相同数据的多重副本,有没有办法获得相同的结果?
答案 0 :(得分:1)
tldr 不,你不能在Plotly中分享数据。
不幸的是,没有办法在图表之间共享数据(据我所知)。 Plotly的库序列化Python(或R)对象,使其可用于其JavaScript核心库。
数据共享需要在JavaScript上进行,即使这非常棘手。
击><击> 撞击>
您可以将数据上传为grid
个对象,然后通过xsrc
,ysrc
,textsrc
等引用它们。
import plotly
import random
# some random data
data1 = [random.randint(0, 10) for _ in range(10)]
text = ['Measurement: {}'.format(i) for i in range(10)]
data2 = [i + random.random() for i in data]
# create the grid object and its columns
col0 = plotly.grid_objs.Column([i for i in range(10)], 'x')
col1 = plotly.grid_objs.Column(data1, 'exp1')
col2 = plotly.grid_objs.Column(data2, 'exp2')
col3 = plotly.grid_objs.Column(text, 'text')
grid = plotly.grid_objs.Grid([col0, col1, col2, col3])
# upload the grid
plotly.plotly.grid_ops.upload(grid, 'tmp')
# create the graph based on the reference grid columns
trace1 = plotly.graph_objs.Scatter(xsrc=grid[0], ysrc=grid[1], textsrc=grid[3])
trace2 = plotly.graph_objs.Scatter(xsrc=grid[0], ysrc=grid[2], textsrc=grid[3])
fig = plotly.graph_objs.Figure(data=[trace1, trace2])
plotly.plotly.iplot(fig)