我使用的是Google图表库,但无法绘制趋势线,可能是因为我将string
用作hAxis,将number
用作vAxis,直到现在我才发现,直到两个轴都为数字时才能绘制趋势线,但是我看过使用Date作为hAxis的示例,但是我认为那是因为这是可比较的。
那么我可以用xAxis作为String绘制一个TrendLine吗?
我的代码:
<script type="text/javascript">
google.load('visualization', '1.1', {'packages': ['corechart'], 'callback': drawChart});
function drawChart() {
var data = new google.visualization.DataTable();
<g:each status="counter" var="row" in="${transactionsColumns}">
data.addColumn("${row[0]}","${row[1]}");
</g:each>
var tempData=new Array();
<g:each status="counter" var="row" in="${transactionsData}">
var lowerArray=new Array();
<g:each status="eIndex" var="element" in="${row}">
<g:if test="${eIndex==0}">
var column="${row[eIndex]}"
lowerArray[${eIndex}]=column;
</g:if>
<g:else>
var column=${row[eIndex]}
lowerArray[${eIndex}]=column;
</g:else>
</g:each>
tempData[${counter}]=lowerArray;
</g:each>
data.addRows(tempData);
var options = {'title':"${transactionsColumns[1][1]}",
'width':'auto',
'height':'auto',
trendlines: {
0: {
visibleInLegend: true,
color: 'purple',
lineWidth: 10,
opacity: 0.2,
}
}
};
var chart = new google.visualization.LineChart(document.getElementById("lineChart${divId}"));
chart.draw(data, options);
}
</script>
编辑:jmac帮助后,我能够做到这一点:
现在我在悬停在图形点上得到了我想要的东西,但是在x轴本身上却没有显示数字
我的代码:这是一个单元格
lowerArray[${eIndex}]= {v:${counter+1},f:column}; //LHS dont care about it. v:loop_var(1,2,3..),f:"MyString"
最佳答案
您可以使用kludge来解决此问题。
Google支持使用单独的值进行计算和显示。您可以为数据提供任意数值,并将其显示为字符串,从而允许您创建趋势线。
例如,如果您具有以下数据集:
data.addColumn('string','Stations');
data.addColumn('number','Bentos Sold');
data.addRows([
['Tokyo',1],
['Shinagawa',2],
['Yokohama',3],
['Nagoya',4],
['Osaka',5]
]);
您可以使用
{v: , f:}
格式更改此内容,如下所示:data.addColumn('number','Stations');
data.addColumn('number','Bentos Sold');
data.addRows([
[{v:1, 'Tokyo'},1],
[{v:2, 'Shinagawa'},2],
[{v:3, 'Yokohama'},3],
[{v:4, 'Nagoya'},4],
[{v:5, 'Osaka'},5]
]);
您的轴值仍将是“ Tokyo”,“ Shinagawa”等,但它们将被计算为数字1、2等。
关于javascript - Google图表中的趋势线,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19117388/