Highcharts - 仅在x轴上显示年份并停止自动格式化

时间:2013-04-30 06:33:23

标签: highcharts

这就是图表目前的样子:

http://jsfiddle.net/YWLpr/2/

enter image description here

如果你看到x轴,你可以看到月份和年份,而我只想显示年份。

令人惊讶的是,如果您在系列中再添加一个数据条目

 [Date.UTC(2011,2,31), 11.30] 

x轴自动格式化并仅显示年份

e.g。 - http://jsfiddle.net/YWLpr/3/

因此,如果有7个数据点,我可以在x轴上看到年份,但如果少于7个数据点,我可以看到月份和年份,这不是我想要的。如何停止此自动格式化并仅在x轴上显示少于7个数据点的年份。

5 个答案:

答案 0 :(得分:2)

如果您调整图表的大小,缩放级别将逐年切换,因此您还必须为月份添加格式化选项:

        dateTimeLabelFormats: {
            month: '%Y',
            year: '%Y'
        }

答案 1 :(得分:2)

您可以随时使用label.formatterlabel.format,请参阅:http://jsfiddle.net/PwEnd/14/

文档:http://api.highcharts.com/highcharts#xAxis.labels.format

答案 2 :(得分:1)

@Pawel的答案并不适合我。我可以看到重复的年份值,这不是我想要的。

以下代码对我有用。

xAxis: {
            type: 'datetime',
            dateTimeLabelFormats: { 
            year: '%Y'
            },
            tickInterval: Date.UTC(2010, 0, 1) - Date.UTC(2009, 0, 1)

        }

答案 3 :(得分:1)

我不得不使用@Pawel和@Sumedh之间的变体。基本上,关键是刻度间隔。如果您未设置间隔,图表将尝试自动放大并显示月份。另一件事是datetimelabelformats工作正常,但我确实注意到一个问题,只有1点,它仍然会显示月份,即使月份格式设置为只显示年份。以下是适用于我的代码。

xAxis: {
    startOnTick: true,
    type: 'datetime',
    labels:
    {
        formatter: function () {
            return Highcharts.dateFormat("%Y", this.value);
        }
    },
    tickInterval: Date.UTC(2010, 0, 1) - Date.UTC(2009, 0, 1)
},

格式化程序几乎覆盖所有标签,方便而不必处理年,月等。这将保证始终显示正确的标签。

答案 4 :(得分:0)

xAxis: [{
    type: "datetime",
    tickInterval: 24 * 3600 * 1000 * 365 // mills in a year. 
}],

来自Documentation

  

请注意,日期时间轴基于毫秒,因此例如,一天的间隔表示为24 * 3600 * 1000