HighCharts基于时间的季度数据- xAxis标签问题
HighCharts Time-based Quarterly Data - xAxis Label Issue
我们正在我们的网站上显示动态数据。用户可以选择不同类型的时间段,如月度、季度、年度、十年等。我们的问题在于如何在x轴上清晰地显示季度数据。我们可以使用格式化器将工具提示正确地显示为"Q1 2008"。我们想让x轴做类似的事情。我们部分做到了,但我想我在这里犯了一些错误。示例为jsFiddle。
我们要处理的代码是在xAxis标签[formatter][2]
:
xAxis: {
alternateGridColor: '#FAFAFA',
labels: {
style: {
fontSize: '9px',
width: '175px'
},
formatter: function () {
var s;
if (Highcharts.dateFormat('%b', this.value) == 'Jan') {
s = s + "Q1"
};
if (Highcharts.dateFormat('%b', this.value) == 'Apr') {
s = s + "Q2"
};
if (Highcharts.dateFormat('%b', this.value) == 'Jul') {
s = s + "Q3"
};
if (Highcharts.dateFormat('%b', this.value) == 'Oct') {
s = s + "Q4"
};
s = s + " " + Highcharts.dateFormat('%Y', this.value);
return s;
}
},
tickInterval: 31536000000,
type: 'datetime'
}
这是使用xAxis的日期时间类型,并在HighCharts下运行。如果我将tickInterval更改为3个月(259200000),它就会变成梨形。我们期望的结果是,xAxis有这样的条目:2007年一季度2007年第二季度2007年第三季度2007年第四季度..2012年第四季度
可以设置tickInterval为三个月
http://jsfiddle.net/yHmrZ/5/tickInterval: 3 * 30 * 24 * 3600 * 1000,
但是当你想动态改变范围时,你应该使用tickpositioner
您可以始终使用自己的tickPositioner
,看看:http://jsfiddle.net/yHmrZ/4/
以及tickPositioner和formatter的代码:
labels: {
formatter: function () {
var s = "",
d = new Date(this.value),
q = Math.floor((d.getMonth() + 3) / 3); //get quarter
s = "Q" + q + " " + d.getFullYear();
return s;
}
},
tickPositioner: function(min, max){
var axis = this.axis,
act = min,
ticks = [];
while( act < max ){
ticks.push(act);
act = act + (90 * 24 * 3600 * 1000); //three months
}
return ticks;
},
相关文章:
- 用程序搜索JQuery数据表中的文本
- 要求输入在数据列表中
- 正在将数据主题添加到所有项目
- 函数参数中的数据与指定变量之间的任何性能差异
- 在VanillaJS中模拟模型双向数据绑定
- CSS-如何定位内容数据标题
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- 序列化数据属性中对象的最可靠方法
- 如何将JSON数据导入我的ejs模板
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何将json数据显示为html
- 画布数据到图像
- 使用jquery将mysql数据获取到新的表行中
- 使用html中的外部javascript进行数据验证
- 有时数据是't显示在浏览器中
- React中的数据集表示
- Angular只从数组中获取所需的数据
- d3js X 轴数据按季度分组按年份分组
- HighCharts基于时间的季度数据- xAxis标签问题