Проблема при рендеринге Multiple Drilldown в fusioncharts - PullRequest
1 голос
/ 12 апреля 2019

Я использую 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()})

Пожалуйста, помогите мне правильно выполнить последовательное развертывание.

Спасибо

1 Ответ

0 голосов
/ 14 апреля 2019

Чтобы изменить тип диаграммы для дочерней диаграммы, вам нужно использовать метод API configureLink для установки типа дочерней диаграммы, вы также можете установить другую диаграмму на другом уровне, при условии, что структура данных для каждой диаграммы правильная, здесь как вы можете сделать

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

Вот демоверсия - http://jsfiddle.net/x0c2wo7k/

Обратите внимание, что в приведенном выше примере используется простой JavaScript

...