如何在只有 1 个中心节点的旭日图中正确使用 'percentParent'?

How to correctly use 'percentParent' in sunburst graphs with only 1 central node?

所以我正在尝试构建一个 Plotly 旭日图,为图中的每个元素显示 percentParent。这适用于所有元素,除非我只有一个中央选项 node/ring/whatever(请参见下面的示例)

由于中央节点显然没有父节点,因此它似乎出现错误并显示 texttemplate 字段中 percentParent 上的括号调用。但是,如果有 2 个(或更多)中心节点,它会自动计算每个节点占两者总和的百分比。

我的问题是: 当我只有 1 个中心节点时,如何只为中心节点隐藏此字段或使其正确显示“100%”?

示例代码:

import pandas as pd
import plotly.graph_objects as go

df = pd.DataFrame({'node_names': ['Center', 'Yes', 'No'],
                   'node_parent': ['', 'Center', 'Center'],
                   'node_labels': ['Center', 'Center_Yes', 'Center_No'],
                   'node_counts': [1000, 701, 299]})


fig = go.Figure(
       data=go.Sunburst(
        ids=df["node_names"],
        labels=df["node_labels"], 
        parents=df["node_parent"],
        values=df["node_counts"],
        branchvalues="total",
        texttemplate = ('%{label}<br>%{percentParent:.1%}'),
    ),
)

fig.show()

在这里我找到了阅读帮助的可能方法go.Sunburst.texttemplate?

import pandas as pd
import plotly.graph_objects as go

df = pd.DataFrame({'node_names': ['Center', 'Yes', 'No'],
                   'node_parent': ['', 'Center', 'Center'],
                   'node_labels': ['Center', 'Center_Yes', 'Center_No'],
                   'node_counts': [1000, 701, 299]})

fig=go.Figure(
    data=go.Sunburst(
        ids=df["node_names"],
        labels=df["node_labels"], 
        parents=df["node_parent"],
        values=df["node_counts"],
        branchvalues="total",
        texttemplate = ('%{label}',
                        '%{label}<br>%{percentParent:.1%}',
                        '%{label}<br>%{percentParent:.1%}',
                        '%{label}<br>%{percentParent:.1%}'),
    ),
)

fig.show()

您最终可以将 texttemplate 中的第一个元素修改为 '%{label}<br>100%'