问题在FusionCharts的渲染多个细目(Problem in rendering Multip

2019-09-28 17:06发布

我使用Django的。 我想使用FusionCharts的向下钻取功能。 我能够正确地拿到第一钻。 但是,当我在第二向下钻取码来说,由于表示“没有数据可显示”。 另外,下面的代码呈现在同类型的所有图表。 但我想呈现不同类型的子图表。 我分享下面的代码片段。

 def chart(request):

    dataSource = {}
    dataSource['chart'] = {
        "caption": "Top 10 Most Populous Countries",
        "showValues": "0",
        "theme": "zune"
        }


    dataSource['data'] = []
    dataSource['linkeddata'] = []

    sbc = MTD.pdobjects.values('Vertical', 'Channel','Brand','Sales_Value')
    sbc_df = sbc.to_dataframe().reset_index(drop=True)#Trying to use filtered model for dataframe
    sbc_df['Sales_Value']=sbc_df['Sales_Value'].astype(float)
    chn_gb=sbc_df.groupby('Channel')['Sales_Value'].sum().reset_index()
    channel=list(chn_gb['Channel'])
    channel_val=list(chn_gb['Sales_Value'])
    sbc_gb=pandas.pivot_table(sbc_df,index=['Vertical','Channel'],values=['Sales_Value'],aggfunc='sum').reset_index()
    brd_gb=pandas.pivot_table(sbc_df,index=['Vertical','Channel','Brand'],values=['Sales_Value'],aggfunc='sum').reset_index()
    for i in range(len(channel)):
      data = {}
      data['label'] = channel[i]
      data['value'] = channel_val[i]

      data['link'] = 'newchart-json-'+ channel[i]
      dataSource['data'].append(data)


      linkData2 = {}

      linkData2['id'] = channel[i]
      linkedchart2 = {}
      linkedchart2['chart'] = {
        "caption" : "Top 10 Most Populous Cities - " + channel[i] ,
        "showValues": "0",
        "theme": "fusion",
        }

      linkedchart2['data'] = []

      sbc_filtered=sbc_gb[sbc_gb.Channel == channel[i]]
      vertical_list=list(sbc_filtered['Vertical'])
      vertical_val=list(sbc_filtered['Sales_Value'])
      for k in range(len(sbc_filtered)):
          arrDara2 = {}
          arrDara2['label'] = vertical_list[k]
          arrDara2['value'] = vertical_val[k]
          arrDara2['link'] = 'newchart-json-'+ vertical_list[k]
          linkedchart2['data'].append(arrDara2)

          linkData1 = {}
          # Inititate the linkData for cities drilldown
          linkData1['id'] = vertical_list[k]
          linkedchart1 = {}
          linkedchart1['chart'] = {
            "caption" : "Top 10 Most Populous Cities - " + vertical_list[k] ,
            "showValues": "0",
            "theme": "fusion",
            }

          linkedchart1['data'] = []

          brd_filtered=brd_gb[(brd_gb.Channel == channel[i]) & (brd_gb.Vertical== vertical_list[k])]
          brd_list=list(brd_filtered['Brand'])
          brd_val=list(brd_filtered['Sales_Value'])
          for j in range(len(brd_filtered)):
              arrDara1 = {}
              arrDara1['label'] = brd_list[j]
              arrDara1['value'] = brd_val[j]
              linkedchart1['data'].append(arrDara1)
          linkData1['linkedchart'] = linkedchart1
          dataSource['linkeddata'].append(linkData1)

      linkData2['linkedchart'] = linkedchart2
      dataSource['linkeddata'].append(linkData2)

      print(dataSource)

    column2D = FusionCharts("column2D", "ex1" , "700", "400", "chart-1", "json", dataSource)
    return render(request, 'table.html',{'output':column2D.render()})

请帮我正确地实现连续向下钻取。

谢谢

Answer 1:

为了改变图表类型,你需要使用configureLink API方法来设置子图表类型孩子的图表,你还可以设置不同的图表在不同的级别,所提供的数据结构为每个图表是正确的,这里是你如何能做

myChart.configureLink([
    { type: 'bar2d' },
    { type: 'line' },
    { type: 'pie2d' }
]);

这里是一个演示- http://jsfiddle.net/x0c2wo7k/

请注意上面的示例使用普通的JavaScript



文章来源: Problem in rendering Multiple Drilldown in fusioncharts