Python 在子图之间打印共享数据点文本

Python 在子图之间打印共享数据点文本,python,plot,plotly,Python,Plot,Plotly,我正在绘制一个由堆叠的子地块组成的图,每个子地块都有非常多的点。对于每一点,我想添加一个文本,以便在工具提示中可视化 因为要可视化的文本对于每个子图都是相同的,所以我刚刚传递了与每个子图的text属性相同的数组(如绘图指南中所示) 然而,这似乎是在为每个子批在html文件中创建字符串数组word\u list的副本(非常长) 是否有任何方法可以获得相同的结果,而不必在html中具有相同数据的多个副本?tldr否,您不能在Plotly中共享数据 不幸的是,在图形之间没有共享数据的方法(据我所知)。

我正在绘制一个由堆叠的子地块组成的图,每个子地块都有非常多的点。对于每一点,我想添加一个文本,以便在工具提示中可视化

因为要可视化的文本对于每个子图都是相同的,所以我刚刚传递了与每个子图的
text
属性相同的数组(如绘图指南中所示)

然而,这似乎是在为每个子批在html文件中创建字符串数组
word\u list
的副本(非常长)

是否有任何方法可以获得相同的结果,而不必在html中具有相同数据的多个副本?

tldr否,您不能在Plotly中共享数据

不幸的是,在图形之间没有共享数据的方法(据我所知)。Plotly的库序列化Python(或R)对象,使其JavaScript核心库可以使用它们

数据共享需要在JavaScript上进行,即使这样也相当棘手

您可以将数据作为对象上传,然后通过
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)

Python中的数据在进入Plotly Javascript库的过程中被序列化。所以,没有,没有直接的方法在图表之间共享数据。好的,似乎没有解决方案,所以如果你将你的评论作为答案发布,我会将其标记为accepted@MaximilianPetters。接受的答案是错误的,并相应地更新。
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)