2013-11-14 112 views
0

看看這個小提琴: 無法獲得趨勢線工作

我沒能拿到小提琴通過分割JS和HTML的工作,所以我只是把它放在HTML窗口。

檢查控制檯加載此小提琴的時候,它會顯示2個錯誤:

Error: Problem parsing d="M0.5,-3.879860269285669e+59L11.599999999999........ 

有問題的部分是:

var options = {"title": "User activity","theme": "maximized","width": 1000,"height": 500,"trendlines": "2: {color: 'purple'}"}; 

具體趨勢線的一部分。我不能爲我的生活弄清楚趨勢線爲什麼不起作用,數據看起來對我來說是好的。

任何想法?

回答

0

我發現了什麼錯誤。我使用了PHP封裝器Chart.php,它將數據從Mysql作爲字符串輸出,而不是整數。將數據投射爲int解決了問題。顯然Google Charts對數據類型非常吝嗇。

+1

這確實會導致問題。如果你的包裝器使用'json_encode'函數,那麼你可以使用一個快捷方式來代替所有數據庫輸出的類型轉換:將'JSON_NUMERIC_CHECK'作爲參數添加到'json_encode'調用中:'json_encode($ myData,JSON_NUMERIC_CHECK) ;' – asgallant

+0

另一個偉大的提示。謝謝,我一直在看這些,但沒有意識到這會做到這一點。所有艱難的類型轉換都感覺有點乾淨。 –

+0

PHP是非常鬆散的類型,類型化幾乎是一個笑話。 – asgallant

1

添加趨勢線的語法是錯誤的。 trendlines選項是一個對象,而不是一個字符串。此外,您必須指定趨勢線的類型('linear''exponential')。它應該看起來像這樣:

trendlines: { 
    // trendline for the first data series (patients) 
    0: { 
     type: 'exponential', 
     color: 'purple' 
    } 
} 

此外,你應該只使用谷歌加載器中的一個回調(多個回調不支持)。創建一個函數,調用您的繪圖函數並將其作爲回調函數傳遞:

function init() { 
    drawChart1(); 
    drawChart2(); 
    drawChart3(); 
} 
google.load('visualization', '1.0', {'packages': ['corechart'],'language': 'en', callback: init}); 
+0

Upvote,因爲你是完全正確的,但它不是答案。見下文。 –