datetime Highchart图表的最小勾选间隔(每月)不起作用
我正在使用日期时间高点图表,我希望x轴刻度间隔每个月都显示datetime Highchart图表的最小勾选间隔(每月)不起作用,datetime,highcharts,Datetime,Highcharts,我正在使用日期时间高点图表,我希望x轴刻度间隔每个月都显示(1月12日、2月12日、3月12日)。但如果数据点小于4,则x轴标签也开始显示月份的天数(12月10日、12月24日、1月7日)。如何确保即使数据点较少或图形被缩放,勾号间隔也是每月一次。以下是x轴的代码: xAxis : { type: 'datetime', tickmarkPlacement:'on',
(1月12日、2月12日、3月12日)
。但如果数据点小于4,则x轴标签也开始显示月份的天数(12月10日、12月24日、1月7日)
。如何确保即使数据点较少或图形被缩放,勾号间隔也是每月一次。以下是x轴的代码:
xAxis : {
type: 'datetime',
tickmarkPlacement:'on',
dateTimeLabelFormats: {
month: '%b-%y',
},
minRange:1*30*24*60*60*1000,
labels : {
rotation :'280',
align:'right',
style: {
fontFamily : 'Helvetica',
fontSize: '10px'
}
}
}
提前感谢这里的问题是并非所有月份都有30天,最好不要设置滴答声间隔或最小范围。您可以尝试自己生成月份,如:
startDate = Date.UTC(2012, 1, 1); //your starting date
// Set the xaxis value as first day of month
for (var i = 0; i < yourData.length; i++) {
var d = new Date();
d.setTime(startDate);
d.setMonth(d.getMonth() + i);
categories.push(d.getTime());
}
请参阅第一个选项的工作演示,网址为:
摘自:
您还可以检查highcharts“不规则间隔时间序列”中的代码。这里他们使用的是
[Date.UTC(1970,9,21),0],[Date.UTC(1970,10,4),0.28]
这里的问题是不是所有月份都有30天,最好不要设置滴答声间隔或最小范围。您可以尝试自己生成月份,如:
startDate = Date.UTC(2012, 1, 1); //your starting date
// Set the xaxis value as first day of month
for (var i = 0; i < yourData.length; i++) {
var d = new Date();
d.setTime(startDate);
d.setMonth(d.getMonth() + i);
categories.push(d.getTime());
}
请参阅第一个选项的工作演示,网址为:
摘自:
您还可以检查highcharts“不规则间隔时间序列”中的代码。在这里,他们使用
[Date.UTC(1970,9,21),0],[Date.UTC(1970,10,4),0.28]
正如我在前面的评论中所提到的,获得您要求的最简单的方法是设置滴答声间隔:
xAxis: {
type: 'datetime',
tickInterval:86400000 * 30
}
例如:
无论缩放的级别或数据点的数量如何,在数据范围内,每个月都会有一个勾号和标签。如我在前面的评论中所述,获取所需内容的最简单方法是设置勾号间隔:
xAxis: {
type: 'datetime',
tickInterval:86400000 * 30
}
例如:
无论缩放级别或数据点数量如何,在数据范围内每个月都会有一个刻度和标签。尝试放置精确间隔刻度,系统将自动显示日期或月份 您只需要在放置记号后格式化标签
Options.xAxis.tickPositioner = function () {
const ticks = this.series[0].xData;
let result = [];
for (let index = 0; index < ticks.length; index++) {
result.push(ticks[index]);
}
return result;
};
Options.xAxis.tickPositioner=函数(){
常量ticks=this.series[0]。扩展数据;
让结果=[];
for(让index=0;index
和格式xAxis
标签:{
格式:“{值:%b-%Y}”,
对齐:“居中”
}
查看工具提示
工具提示:{
值后缀:“”,
值前缀:“”,
xDateFormat:“%B-%Y”,
数值小数:0
},尝试输入精确间隔勾号,系统将自动显示日期或月份 您只需要在放置记号后格式化标签
Options.xAxis.tickPositioner = function () {
const ticks = this.series[0].xData;
let result = [];
for (let index = 0; index < ticks.length; index++) {
result.push(ticks[index]);
}
return result;
};
Options.xAxis.tickPositioner=函数(){
常量ticks=this.series[0]。扩展数据;
让结果=[];
for(让index=0;index
和格式xAxis
标签:{
格式:“{值:%b-%Y}”,
对齐:“居中”
}
查看工具提示
工具提示:{
值后缀:“”,
值前缀:“”,
xDateFormat:“%B-%Y”,
数值小数:0
},您可以使用。如果您在实现方面遇到问题或希望找到另一个解决方案,请发布您的问题的实例,例如在JSFIDLE中。我不想自己定义勾号位置。我要高图表来决定。但是,我不希望每个月都有滴答声。如果你想让Highcharts做出与现在不同的决定,那么你可以扩展HC-如果你认为这是一个bug,应该修复,那么请发布一个实时演示。你的标题说滴答声间隔不起作用,但你在发布的代码中没有指定滴答声间隔。将滴答声间隔设置为30天,它应该按照您所描述的那样工作。您可以使用可能的重复。如果您在实现方面遇到问题或希望找到另一个解决方案,请发布您的问题的实例,例如在JSFIDLE中。我不想自己定义勾号位置。我要高图表来决定。但是,我不希望每个月都有滴答声。如果你想让Highcharts做出与现在不同的决定,那么你可以扩展HC-如果你认为这是一个bug,应该修复,那么请发布一个实时演示。你的标题说滴答声间隔不起作用,但你在发布的代码中没有指定滴答声间隔。将您的tickInterval设置为30天,它应该按照您所描述的那样工作。虽然并非所有月份都有30天这一点显然是正确的,但如果将tickInterval设置为30天,则结果将是每个月的轴标签。如果需要绝对精度,你可以每月计算并使用tickPositions或tickPositioner,但海报上已经说他们不想这样做。此外,如果你在张贴的小提琴中查看结果,它无法达到原始帖子的要求-没有每个月的标签;相反,你为数据本身操纵了x值,如果你看实际值,它们不是每个月的第一个值,它们相隔30天:)你绝对准确地说是对的,但在问题中,如果你将数据更改为4个值,他们会要求每个值1个月,每个点之间相隔1个月(正如他们所问的那样)。虽然并非所有月份都有30天,但如果将tickInterval设置为30天,结果将是每个月都有一个轴标签。如果需要绝对精度,你可以每月计算并使用tickPositions或tickPositioner,但海报上已经说他们不想这样做