【问题标题】:Plotly: Add parallel features in sunburst with sizes proportionate to parent classPlotly:在 sunburst 中添加与父类成比例的平行特征
【发布时间】:2021-06-08 13:39:53
【问题描述】:

在一个 plotly sunburst 图表中,我想将多个子类添加到父类。我尝试将值分配给names, parents, values,如here 所示。但它返回一个空白数字。我尝试制作一个path 变量(在下面的代码中),但我不确定如何将多个直接子级命名为单个父类。这就是我想要的-

这里是重现的代码-

import pandas as pd
import plotly.express as px

df = pd.DataFrame({'continent':['SA','SA','NA','NA'],
                  'country':['Brazil','Uruguay','USA','Canada'],
                  'total_vaccinations':[100,80,400,200],
                  'people_vaccinated':[40,20,100,80],
                  'people_fully_vaccinated':[8,4,11,11]})

px.sunburst(df, path=['continent','country'],values='total_vaccinations')

我希望 people_vaccinatedpeople_fully_vaccinated 以孩子的身份出现在描绘 total_vaccinations 的各个国家/地区。我希望它们的大小与它们的价值成比例。非常感谢您的帮助!

【问题讨论】:

    标签: python plotly data-visualization plotly-python sunburst-diagram


    【解决方案1】:

    如您所见,使用px.sunburst() 创建旭日形图有两种方法。使用path 变量或使用namesparentsvalues 变量。

    path 变量的第一个变体适用于矩形数据,因此不适合您,因为您有缺失值。虽然存在缺失值的矩形数据的可能性,但它要求缺失值的父项没有其他条目(plotly ref)

    因此,您必须使用第二个变体。由于您有一些名称相同的叶子,因此除了namesparentsvalues 之外,您还需要定义一个具有唯一字符串的列表ids

    import pandas as pd
    import plotly.express as px
    
    
    data = {
      'ids':['SA', 'NA', 'Brazil', 'Uruguay', 'USA', 'Canada', 'PFV Brazil', 'PV Brazil', 'PFV Uruguay', 'PV Uruguay', 'PFV USA', 'PV USA', 'PFV Canada', 'PV Canada'],
      'labels': ['SA', 'NA', 'Brazil', 'Uruguay', 'USA', 'Canada', 'PFV', 'PV', 'PFV', 'PV', 'PFV', 'PV', 'PFV', 'PV'],
      'parent': ['', '', 'SA', 'SA', 'NA', 'NA', 'Brazil', 'Brazil', 'Uruguay', 'Uruguay', 'USA', 'USA', 'Canada', 'Canada'],
      'value': [0, 0, 100, 80, 400, 200, 8, 40, 4, 20, 11, 100, 11, 80]
      }
    
    fig =px.sunburst(data, names='labels', parents='parent',  values='value', ids='ids')
    fig.show()
    

    结果将如下所示:

    【讨论】:

    • 该解决方案完美运行!但是,当我将颜色设为连续刻度时,NASA 的颜色代表 0(这是有道理的,因为它们的值被指定为 0),而我希望它们代表国家的总和。如果我手动分配它,它会留下一个很大的空白空间,就像 from (country:PV+PFV)
    • 如果您添加参数branchvalues="remainder",您可以将非零值分配给NA和SA
    • 我尝试这样做,但它没有提供所需的解决方案。我问了一个新的question 以便更清楚。
    猜你喜欢
    • 1970-01-01
    • 2021-08-17
    • 2011-05-12
    • 2014-08-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多