繁体   English   中英

Plotly中的线路悬停文本

[英]Line hover text in Plotly

我正在使用Plotly绘制一个类似于Plotly网站上的示例的图表
除了图形节点上的悬停文本,我还希望在边缘上有悬停文本。

我尝试通过添加“名称”字段来修改边缘的跟踪对象来实现此目的,但这不起作用并且在节点上放置“名称”。

trace3=Scatter(
    x=Xed,
    y=Yed,
    name="my_hover_text",
    mode='lines',
    line=Line(color='rgb(210,210,210)', width=1),
    hoverinfo='name'
)

使用“文本”字段而不是“名称”字段,可以得到完全相同的结果。

我还尝试为每个边缘设置一个单独的跟踪,这可以解决关于将名称放在哪里的混淆,但这导致我无处可去。
作为底线,我需要一种方法将(悬停)标签/文本放在连接两个点的线上。

一个快速的解决方案/黑客是在Maximilian在评论中提到的社区论坛页面上关注etienne的想法
我们的想法是在每一行上插入一个透明节点,并用悬停文本标签对其进行注释。

这是一个适合我的代码

trace3_list = []
middle_node_trace = go.Scatter(
    x=[],
    y=[],
    text=[],
    mode='markers',
    hoverinfo='text',
    marker=go.Marker(
        opacity=0
    )
)
for edge in G.edges(data=True):
    trace3=Scatter(
        x=[],
        y=[],
        mode='lines',
        line=Line(color='rgb(210,210,210)', width=edge[2]['weight']),
        hoverinfo='none'
    )
    x0, y0 = G.node[edge[0]]['pos']
    x1, y1 = G.node[edge[1]]['pos']
    trace3['x'] += [x0, x1, None]
    trace3['y'] += [y0, y1, None]
    trace3_list.append(trace3)

    middle_node_trace['x'].append((x0+x1)/2)
    middle_node_trace['y'].append((y0+y1)/2)
    middle_node_trace['text'].append(str(edge[2]['weight']))

然后只绘制所有迹线,即[*trace3_list, middle_node_trace]

奖励:每个边缘具有单独的迹线允许设置不同的宽度,例如与边缘重量成比例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM