微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

删除 Plotly Sankey 图中的文本标签,但在悬停时保留数据 [Plotly Python Sankey 问题]

如何解决删除 Plotly Sankey 图中的文本标签,但在悬停时保留数据 [Plotly Python Sankey 问题]

我想在您悬停时保留标签,但将标签隐藏在 Sankey 上方不显示为文本。

这是我的代码

labels = df_mapping['Name'].to_numpy().tolist() + labels
count_dict = {}
source = []
target = []
value = df_subset['Stuff'].to_numpy().tolist()
index = 0
for x in unique_broad:
    count_dict[x] = len(df_mapping.loc[df_mapping['Stuff'] == x])
for key in count_dict:
    for i in range(count_dict[key]):
        source.append(index)
        index += 1
for key in count_dict:
    for i in range(count_dict[key]):
        target.append(index)
    index += 1
number_of_colors = len(source)
color_link = ["#"+''.join([random.choice('0123456789ABCDEF') for j in range(6)])
             for i in range(number_of_colors)]
link = dict(source=source,target=target,value=value,color=color_link)
node = dict(label=labels,pad=35,thickness=10)
data = go.Sankey(link=link,node=node)
fig = go.figure(data)
fig.update_layout(
    hovermode = 'x',title="Sankey for Stuff",font=dict(size=8,color='white'),paper_bgcolor='#51504f'
)
return fig

Picture of what needs to change

解决方法

您可以通过将标签的颜色设置为 rgba(0,0) 来使标签不可见。这确保标签将保留在悬停模板中,但不会显示在节点上。

为此,您可以将 textfont=dict(color="rgba(0,0)",size=1) 传递给 go.Sankey,例如您在 Plotly sankey 图表文档中使用的示例:

import plotly.graph_objects as go
import urllib.request,json

url = 'https://raw.githubusercontent.com/plotly/plotly.js/master/test/image/mocks/sankey_energy.json'
response = urllib.request.urlopen(url)
data = json.loads(response.read())

# override gray link colors with 'source' colors
opacity = 0.4
# change 'magenta' to its 'rgba' value to add opacity
data['data'][0]['node']['color'] = ['rgba(255,255,0.8)' if color == "magenta" else color for color in data['data'][0]['node']['color']]
data['data'][0]['link']['color'] = [data['data'][0]['node']['color'][src].replace("0.8",str(opacity))
                                    for src in data['data'][0]['link']['source']]

fig = go.Figure(data=[go.Sankey(
    textfont=dict(color="rgba(0,size=1),valueformat = ".0f",valuesuffix = "TWh",# Define nodes
    node = dict(
      pad = 15,thickness = 15,line = dict(color = "black",width = 0.5),label =  data['data'][0]['node']['label'],color =  data['data'][0]['node']['color']
    ),# Add links
    link = dict(
      source =  data['data'][0]['link']['source'],target =  data['data'][0]['link']['target'],value =  data['data'][0]['link']['value'],label =  data['data'][0]['link']['label'],color =  data['data'][0]['link']['color']
))])

fig.update_layout(title_text="Energy forecast for 2050<br>Source: Department of Energy & Climate Change,Tom Counsell via <a href='https://bost.ocks.org/mike/sankey/'>Mike Bostock</a>",font_size=10)
fig.show()

您将获得以下信息:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。