Google Charts - hAxis 上的数字/字符串问题(Jquery ajax JSON 数据)
Google Charts - number/string issue on hAxis (Jquery ajax JSON data)
我想做什么
我正在尝试使用Google图表在"组合图表"中显示MySQL数据库中的数据。为了做到这一点,我遵循了本教程,进行了一些更改,并提出了本文底部所示的代码。
实际行为
数据显示正确。然而,我必须告诉谷歌图表,"年"是一个数字,使它进入连续的"模式"。这导致 hAxis 上的年份以小数位显示,特别是如果我没有所有连续年份的数据。(即 2,010.5)
期望的行为
我希望谷歌图表像字符串一样显示年份,并以离散的"模式"运行。
我认为问题是什么
我认为我遇到的问题主要是由于年份(要在 hAxis 上显示)是数据库中的 int(11),并且控制器提供的 json 也将年份作为数字。为了在下面澄清一个 json 可能是什么样子的示例:
[
{
"year_data": 2010,
"data_1": 125895,
"data_2": 25158.5
}
]
由于我将控制器用于一堆其他事情,因此我最好不要对其进行任何更改。
我试图修复它
- 我尝试了将
data.addColumn('number', 'year_data');
更改为data.addColumn('string', 'year_data');
的大胆举动。它不起作用,我得到了"类型不匹配"。 - 我试图想出一种解决方法,主要涉及
hAxis.showTextEvery:
和某种行数。它没有用,但这很可能是由于我缺乏经验/知识。
一句话中的问题
如何在 JavaScript 中将年份数据转换为字符串,或者让 Google 图表表现得像字符串一样?
法典
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js" type="text/javascript"></script>
<script src="/googlecharts/ajaxGetPost.js" type="text/javascript"></script>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script>
function charts(data, ChartType) {
var jsonData = data;
google.load("visualization", "1", {
packages: ["corechart"],
callback: drawVisualization
});
function drawVisualization() {
var data = new google.visualization.DataTable();
data.addColumn('number', 'year_data');
data.addColumn('number', 'Data 1');
data.addColumn('number', 'Data 2');
$.each(jsonData, function(i, jsonData) {
var year = jsonData.year_data;
var data1 = jsonData.data_1;
var data2 = jsonData.data_2;
data.addRows([
[year, data1, data2]
]);
});
var options = {
colorAxis: {
colors: ['#54C492', '#cc0000']
},
datalessRegionColor: '#dedede',
defaultColor: '#dedede',
legend: {
position: 'bottom',
alignment: 'start'
},
seriesType: 'bars',
series: {
1: {
type: 'line'
}
}
};
var chart = new google.visualization.ComboChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
}
$(document).ready(function() {
url = '/data/get';
ajax_data('GET', url, function(data) {
charts(data)
});
});
</script>
toString
应该可以正常工作,请参阅以下代码片段...
var data = new google.visualization.DataTable();
data.addColumn('string', 'year_data');
data.addColumn('number', 'Data 1');
data.addColumn('number', 'Data 2');
$.each(jsonData, function(i, jsonData) {
var year = jsonData.year_data.toString();
var data1 = jsonData.data_1;
var data2 = jsonData.data_2;
data.addRows([
[year, data1, data2]
]);
});
相关文章:
- 带有slideUp/Down和clearQueue的jQuery问题
- html代码没有运行jquery问题
- 使用jquery问题将文本附加到文本区域
- 当变量中的.find()项有多个匹配项时,jQuery问题
- 由于jQuery问题,在实现Disqus插件时出现问题
- 在jquery问题中设置值
- 基本有类 jquery 问题
- 使用最接近查找文本输入的JQuery问题
- css上的Jquery问题
- 使用 jQuery 问题验证和提交表单
- 循环每个 jQuery 问题
- insertBefore() 一个 iframe jquery 问题
- Magento - 原型.js和jQuery问题 - 添加到购物车按钮
- 谷歌浏览器jQuery问题
- IE 中止插件脚本会导致现场出现 JQuery 问题
- 在 jquery 问题中加载更多选项
- Javascript - 使用 jQuery 问题选择选项
- 使用两个函数时出现 Jquery 问题
- jquery问题 - 它不会相应地改变它
- Jquery问题在Firefox和IE中,但不是Chrome