密谋:森伯斯特图无法正确呈现

时间:2020-07-25 04:48:10

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

我正在按照official documentation在python3上以图例方式遵循森伯斯特图的教程示例。

基于此示例,我以与示例完全相似的方式构建了DataFrame,并验证了数据的完整性。

现在,这是问题所在。如果像下面的代码所示添加branchvalues='total',则会得到一个空白的白色图表。这意味着什么都不会渲染。

fig.add_trace(go.Sunburst(
    labels=df_all_trees['id'],
    parents=df_all_trees['parent'],
    values=df_all_trees['value'],
    branchvalues='total',
    marker=dict(
        colors=df_all_trees['color'],
        colorscale='RdBu'),
    hovertemplate='<b>%{label} </b> <br></br> Allocated: %{value}',
    name=''
))

如果我删除branchvalues='total',如下面的代码所示,

fig.add_trace(go.Sunburst(
    labels=df_all_trees['id'],
    parents=df_all_trees['parent'],
    values=df_all_trees['value'],
    marker=dict(
        colors=df_all_trees['color'],
        colorscale='RdBu'),
    hovertemplate='<b>%{label} </b> <br></br> Allocated: %{value}',
    name=''
))

我得到一个相当扭曲的图。

enter image description here

我在做什么错了?

编辑-添加的数据和代码

数据

enter image description here

csv中的数据相同

,id,父项,值,颜色

0,税收筹划,星空保利,1.54,1.54

1,税收筹划,超级大道,8.46,8.46

2,税收筹划,巴哈吉金融区,8.75,8.75

3,班德银行税收计划,2.75,2.75

4,税收筹划,Bharti Airtel,1.74,1.74

5,税收筹划,印度康明斯,1.5,1.5

6,税收筹划,迪维实验室,2.16,2.16

7,税收筹划,耐力技术,0.86,0.86

8,税收筹划,H D F C,4.9,4.9

9,税收筹划,HDFC银行,6.35,6.35

10,税收筹划,ICICI银行,2.32,2.32

11,税收筹划,信息教育(印度),5.08,5.08

12,税收计划,柯达玛哈。银行,8.454707583,8.454707583

13,税收筹划,MAS FINANC SER,0.74,0.74

14,税收筹划,丸木铃木,4.71,4.71

15,税收筹划,苏森母亲,1.19,1.19

16,税收筹划,多方沟通。例1.29,1.29

17,税收计划,印度的雀巢,4.53,4.53

18,税收筹划,Net CA和其他人,1.1、1.1

19,Pidilite Ind。,Tax Planning,5.72,5.72

20,税收筹划,水泥,1.17、1.17

21,税收筹划,圣达拉姆港,0.04,0.04

22,税收筹划,圣达兰金融,1.58,1.58

23,税收筹划,交响曲,1.76,1.76

24,税收筹划,TCS,6.17,6.17

25,税收筹划,TTK Healthcare,0.07,0.07

26,税收筹划,TTK信誉,2.07、2.07

27,税收筹划,塔塔全球,0.52,0.52

28,税收筹划,马辛德拉科技公司,1.39,1.39

29,税收筹划,Torrent Power,3.61、3.61

30,税收筹划,V-Guard工业,0.55,0.55

31,税收计划,印度威伯科,1.74,1.74

32,Astral Poly,塑料产品,1.54,1.54

33,Avenue Super。,交易,8.46,8.46

34,Bajaj Fin。,金融与投资,8.75,8.75

35,Bandhan Bank,银行-私营部门,2.75,2.75

36,Bharti Airtel,电信-服务提供商,1.74,1.74

37,Cummins India,Engines,1.5,1.5

38,Divi's Lab。,Pharmaceuticals-Indian-Bulk Drugs,2.16,2.16

39,Endurance Tech。,Auto Ancillaries,0.86,0.86

40,H D F C,财务-房屋,4.9,4.9

41,HDFC银行,银行-私营部门,6.35,6.35

42,ICICI银行,银行-私人部门,2.32,2.32

43,Info Edg。(India),Miscellaneous,5.08,5.08

44,柯达玛哈。银行,银行-私营部门,8.454707583,8.454707583

45,MAS FINANC SER,Finance&Investments,0.74,0.74

46,丸木铃木,汽车-乘用车,4.71,4.71

47,Motherson Sumi,Auto Ancillaries,1.19,1.19

48,Multi Comm。例如,其他,1.29,1.29

49,雀巢印度,食品-加工-跨国公司,4.53,4.53

50,Net CA及其他,Net CA及其他,1.1,1.1

51,Pidilite Inds。,Chemicals,5.72,5.72

52,Shree Cement,水泥-北印度,1.17,1.17

53,Sundaram Fin.Hol,Finance&Investments,0.04,0.04

54,Sundaram Finance,Finance&Investments,1.58,1.58

55,交响乐团,家用电器,1.76,1.76

56,TCS,计算机-软件-大型,6.17,6.17

57,TTK Healthcare,Pharmaceuticals-Indian-Bulk Drugs&Formln,0.07,0.07

58,TTK Prestige,家用电器,2.07,2.07

59,Tata Global,Tea,0.52,0.52

60,Tech Mahindra,计算机-软件-大型,1.39、1.39

61,洪流功率,发电与供电,3.61,3.61

62,V-Guard工业,电气设备,0.55,0.55

63,WABCO印度,汽车辅助设备,1.74,1.74

64,Auto Ancillaries,Equity,3.7899999999999996,3.7899999999999996

65,汽车-乘用车,股票,4.71、4.71

66,银行-私人部门,股票,19.874707583,19.874707583

67,水泥-印度北部,股票,1.17,1.17

68,化学物质,股票,5.72,5.72

69,计算机-软件-Large,Equity,7.56,7.56

70,家用电器,股票,3.83,3.83

71,电气设备,股权,0.55,0.55

72,Engines,Equity,1.5,1.5

73,金融与投资,股权,11.11,11.11

74,金融-住房,股权,4.9、4.9

75,食品-加工-跨国公司,股权,4.53,4.53

76,其他,权益,6.37,6.37

77,Net CA及其他,Net CA及其他,1.1,1.1

78,Pharmaceuticals-Indian-Bulk Drugs,Equity,2.16,2.16

79,Pharmaceuticals-Indian-Bulk Drugs&Formln,Equity,0.07,0.07

80,塑料制品,股票,1.54,1.54

81,发电与供电,权益,3.61,3.61

82,茶,权益,0.52,0.52

83,电信-服务提供商,股权,1.74,1.74

84,交易,股权,8.46、8.46

85,权益总计,93.71470758299998,93.71470758299998

86,Net CA及其他,总计1.1、1.1

总计87,94.814707583,94.814707583

上面的数据/ csv需要在一个已知为 alloc

的数据帧中导入

代码

import plotly.graph_objects as go
from plotly.subplots import make_subplots
import pandas as pd

df = alloc

average_score = df['PERC_HOLD'].sum()

fig = go.Figure()

fig.add_trace(go.Sunburst(
    labels=df_all_trees['id'],
    parents=df_all_trees['parent'],
    values=df_all_trees['value'],
    branchvalues='total',
    marker=dict(
        colors=df_all_trees['color'],
        colorscale='RdBu',
        cmid=average_score),
    hovertemplate='<b>%{label} </b> <br> Sales: %{value}<br> Success rate: %{color:.2f}',
    name=''
    ))

fig.update_layout(margin=dict(t=10, b=10, r=10, l=10))
fig.write_html("fig2.html")

1 个答案:

答案 0 :(得分:0)

在这种特殊情况下,如果没有适当的数据样本,几乎不可能提供完整的解决方案。我要测试的第一件事是设置

branchvalues="remainder"