2014-11-02 39 views
1

我忙於使用Django應用程序分析各種數據(主要是使用熊貓),然後使用Google圖表顯示結果。從Django到Javascript的Python數據

我很難搞清楚從django view.py傳遞數據的最佳方式,它通常會在熊貓數據框或字典中,以便在模板文件中使用(使用JavaScript來表示谷歌圖表)。

下面是一些代碼,顯示了用於顯示其中一個圖表的javascript函數。在這個例子中,我將數據硬編碼到圖表中(即:年份和銷售額已手動輸入)。然而,需要做的是使用熊貓數據框中的數據。

function drawChart() { 

    var data = google.visualization.arrayToDataTable([ 
     ['Year', 'Sales'], 
     ['2004', 1000], 
     ['2005', 1170], 
     ['2006', 660], 
     ['2007', 1030] 
    ]); 

    var options = { 
     title: 'Company Performance', 
     hAxis: {title: 'Year', titleTextStyle: {color: 'red'}} 
    }; 

    var chart = new google.visualization.ColumnChart(document.getElementById('chart_div')); 
    chart.draw(data, options); 
    } 

使用django模板語言{{var}}很容易通過單個變量或列表。然而,我不完全確定如何通過更復雜的數據框,字典等在JavaScript函數中使用。

非常感謝。

+0

你要傳遞的數據或期權或兩者兼而有之? – laike9m 2014-11-02 11:57:24

+0

我想從熊貓數據幀傳遞數據 – darkpool 2014-11-02 11:59:58

回答

1

這是你想要的嗎?

views.py:

import json 

def some_view_func(request): 
    data = [ 
     ['Year', 'Sales'], 
     ['2004', 1000], 
     ['2005', 1170], 
     ['2006', 660], 
     ['2007', 1030] 
    ] 
    render(request, 'template.html', {'data': json.dumps(data)}) 

template.html

<script> 
    var data = google.visualization.arrayToDataTable(JSON.parse({{data}})); 
</script> 
+0

謝謝你的回覆。不幸的是,這似乎並不奏效。然而,我的模板加載的圖表應該是什麼都沒有。 – darkpool 2014-11-02 15:04:45

+0

@darkpool你是什麼意思'沒有什麼'? – laike9m 2014-11-02 15:26:03

+0

我的模板應該顯示一個條形圖。這就是javascript函數的功能。但是,在嘗試您的建議時,不會顯示條形圖。沒有顯示,即:它不起作用。如果有幫助,我使用的google圖表代碼來自https://developers.google.com/chart/interactive/docs/gallery/columnchart。所以我需要用一個通過views.py – darkpool 2014-11-02 15:31:24

1

這是爲了實現我想你想

def view_func(request): 
    data =pd.DataFrame(np.random.randn(20, 5)) 

    render(request, 'template.html', {'data': data.to_html()}) 

見的方式documentation額外有關CSS樣式和其他內容的詳細信息。

在模板中還實現了數據的「安全」,如下所示:

{{ data | safe }} 
+0

謝謝你試圖幫助。但是,我的模板加載,但沒有條形圖。沒有顯示。 – darkpool 2014-11-02 15:14:38

+0

有一個庫[django-pandas](https://pypi.python.org/pypi/django-pandas/0.2.0)用於這類工作。看到它可能會幫助 – abhi 2014-11-02 19:31:37

+0

或在views.py中跳到to.html()並執行此操作。{{data.to_html(classes =「table table-striped」)|安全}}在你的模板中 – abhi 2014-11-02 19:42:21

相關問題