Google 图表列图表轴日期错误
Google Chart columnChart haxis dates are wrong
我有一个 Google 图表(柱状图)显示一个日期为 (2010 年 1 月 = 2010-01-01) 的柱 - 但结果柱似乎 运行 从 1- Jul-09 到 1-Jul-10(请注意,这似乎会根据屏幕的宽度而改变);我该如何解决这个问题,以便该列仅位于 01-Jan-2010 日期? (**请注意,dates/values 是可变的,可以包含一个或数百个列值,因此我们不能简单地对其进行硬编码或将列类型从 'date' 更改为 'string')。
var arr = eval("[[new Date(2010, 0, 1), 0,1]]");
var data = new google.visualization.DataTable();
data.addColumn('date', 'Dt');
data.addColumn('number', 'Open');
data.addColumn('number', 'Closed');
data.addRows(arr);
var options_stacked = {
isStacked: true,
height: 300,
colors: ['#111', '#a00'],
hAxis: {
slantedText: false,
format: 'd/MMM/yy',
},
legend: {
position: 'top',
},
vAxis: {
minValue: 0
}
};
var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
chart.draw(data, options_stacked);
上找到此演示程序
您可以添加自定义刻度以确保每一列“位于”正确的日期。
ticks 选项需要一个值数组。
我们可以使用 DataTable 方法 --> getDistinctValue(colIndex)
return 来自数据 table.
的日期值
var xTicks = data.getDistinctValues(0);
hAxis: {
slantedText: false,
format: 'd.MMM.yy', <---- changed from 'd/MMM/yy' to avoid line breaks
ticks: xTicks
},
请参阅以下工作片段...
function doTest() {
var arr = eval("[[new Date(2010, 0, 1), 0,1]]");
var data = new google.visualization.DataTable();
data.addColumn('date', 'Dt');
data.addColumn('number', 'Open');
data.addColumn('number', 'Closed');
data.addRows(arr);
var xTicks = data.getDistinctValues(0);
var options_stacked = {
isStacked: true,
height: 300,
colors: ['#111', '#a00'],
hAxis: {
slantedText: false,
format: 'd/MMM/yy',
ticks: xTicks
},
legend: {
position: 'top',
},
vAxis: {
minValue: 0
}
};
var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
chart.draw(data, options_stacked);
}
window.addEventListener('resize', doTest);
google.charts.load('current', {
packages: ['corechart', 'bar']
});
google.charts.setOnLoadCallback(doTest);
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<h1>Google Charts</h1>
<div id="chart_div"></div>
我有一个 Google 图表(柱状图)显示一个日期为 (2010 年 1 月 = 2010-01-01) 的柱 - 但结果柱似乎 运行 从 1- Jul-09 到 1-Jul-10(请注意,这似乎会根据屏幕的宽度而改变);我该如何解决这个问题,以便该列仅位于 01-Jan-2010 日期? (**请注意,dates/values 是可变的,可以包含一个或数百个列值,因此我们不能简单地对其进行硬编码或将列类型从 'date' 更改为 'string')。
var arr = eval("[[new Date(2010, 0, 1), 0,1]]");
var data = new google.visualization.DataTable();
data.addColumn('date', 'Dt');
data.addColumn('number', 'Open');
data.addColumn('number', 'Closed');
data.addRows(arr);
var options_stacked = {
isStacked: true,
height: 300,
colors: ['#111', '#a00'],
hAxis: {
slantedText: false,
format: 'd/MMM/yy',
},
legend: {
position: 'top',
},
vAxis: {
minValue: 0
}
};
var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
chart.draw(data, options_stacked);
上找到此演示程序
您可以添加自定义刻度以确保每一列“位于”正确的日期。
ticks 选项需要一个值数组。
我们可以使用 DataTable 方法 --> getDistinctValue(colIndex)
return 来自数据 table.
var xTicks = data.getDistinctValues(0);
hAxis: {
slantedText: false,
format: 'd.MMM.yy', <---- changed from 'd/MMM/yy' to avoid line breaks
ticks: xTicks
},
请参阅以下工作片段...
function doTest() {
var arr = eval("[[new Date(2010, 0, 1), 0,1]]");
var data = new google.visualization.DataTable();
data.addColumn('date', 'Dt');
data.addColumn('number', 'Open');
data.addColumn('number', 'Closed');
data.addRows(arr);
var xTicks = data.getDistinctValues(0);
var options_stacked = {
isStacked: true,
height: 300,
colors: ['#111', '#a00'],
hAxis: {
slantedText: false,
format: 'd/MMM/yy',
ticks: xTicks
},
legend: {
position: 'top',
},
vAxis: {
minValue: 0
}
};
var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
chart.draw(data, options_stacked);
}
window.addEventListener('resize', doTest);
google.charts.load('current', {
packages: ['corechart', 'bar']
});
google.charts.setOnLoadCallback(doTest);
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<h1>Google Charts</h1>
<div id="chart_div"></div>