Plotly:在 sunburst 中添加平行特征,其大小与父 class 成比例
Plotly: Add parallel features in sunburst with sizes proportionate to parent class
在阴谋森伯斯特图表中,我想将多个子 class 添加到父 class。我已尝试将值分配给 names, parents, values
,如图 here 所示。但它 returns 是一个空白数字。我尝试制作一个 path
变量(在下面的代码中),但我不确定如何将多个直接子级命名为单个父级 class。这就是我想要的-
这里是重现的代码-
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_vaccinated
和 people_fully_vaccinated
特征作为描述 total_vaccinations
的各自国家的子特征。我希望它们的大小根据它们的值成比例。非常感谢您的帮助!
如您所见,有两种方法可以使用 px.sunburst()
创建旭日图。使用 path
变量或使用 names
、parents
和 values
变量。
带有 path
变量的第一个变体适用于矩形数据,因此不适合您,因为您有缺失值。虽然矩形数据存在缺失值的可能,但要求缺失值的父项没有其他条目(plotly ref).
因此,您必须使用第二种变体。由于您有一些具有相同名称的叶子,因此除了 names
、parents
和 values
之外,您还需要定义一个具有唯一字符串的列表 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()
结果将如下所示:
在阴谋森伯斯特图表中,我想将多个子 class 添加到父 class。我已尝试将值分配给 names, parents, values
,如图 here 所示。但它 returns 是一个空白数字。我尝试制作一个 path
变量(在下面的代码中),但我不确定如何将多个直接子级命名为单个父级 class。这就是我想要的-
这里是重现的代码-
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_vaccinated
和 people_fully_vaccinated
特征作为描述 total_vaccinations
的各自国家的子特征。我希望它们的大小根据它们的值成比例。非常感谢您的帮助!
如您所见,有两种方法可以使用 px.sunburst()
创建旭日图。使用 path
变量或使用 names
、parents
和 values
变量。
带有 path
变量的第一个变体适用于矩形数据,因此不适合您,因为您有缺失值。虽然矩形数据存在缺失值的可能,但要求缺失值的父项没有其他条目(plotly ref).
因此,您必须使用第二种变体。由于您有一些具有相同名称的叶子,因此除了 names
、parents
和 values
之外,您还需要定义一个具有唯一字符串的列表 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()
结果将如下所示: