可以使用 px.sunburst 编辑单个类别的字体大小和颜色吗?

It is possible to edit single categories fontsize and color with px.sunburst?

我创建了一个漂亮的 px.sunburst 图表。现在我想格式化旭日形的单个“节点”。例如,我想更改主“节点”的字体大小并使其变为粗体或更改特定“节点”的颜色。

不幸的是我在 Sunburst documentation 中没有找到这样的功能。

uniformtext 仅格式化整个文本,使用 colorcolor_discrete_map 我无法控制单个节点:

伪代码:

import plotly.express as px 

data = dict(
    character=["Eve", "Cain", "Seth", "Enos", "Noam", "Abel", "Awan", "Enoch", "Azura"],
    parent=["", "Eve", "Eve", "Seth", "Seth", "Eve", "Eve", "Awan", "Eve" ],
    value=[10, 14, 12, 10, 2, 6, 6, 4, 4],
)
        
fig = px.sunburst(
    data,
    names='character',
    parents='parent',
    values='value',
    color='parent', 
    color_discrete_map={
        '': 'rgb(56, 75, 126)', 
        'Eve': 'lightgreen', 
        'Cain': 'black', 
        'Enos': 'black',
     },
)
     
fig.show()

是否可能,即

我没有在文档中找到此类功能。

要分别更改这些旭日形节点的颜色,您需要设置 color='character'。保留离散地图会导致:

对于字体大小,我会让 plotly 解决这个问题,因为在幕后它正在调整字体大小以使其适合其区域。话虽如此,您可以通过多种方式设置字体大小,也许实现您想要的:

使用 fig.update_traces(textfont=dict(size=[20])) 将设置第一项的字体大小。

要调整更多节点,请根据需要扩展数组以与 character 中的项目对齐,例如:

fig.update_traces(textfont=dict(family=['Arial','Courier New'],size=[8,20,8]))

character 中的第二项设置为 Courier New 它的字体为 20,第一个和第三个元素的字体大小为 8。

最后,将它们放在一起(这可能取决于您可用的字体)以设置 Eve 的字体大小并使其变为粗体:

fig.update_traces(textfont=dict(family=['Arial Black', 'Arial'],size=[15]))