Highcharts - 将%附加到第一个轴标签?

时间:2012-03-02 22:28:49

标签: highcharts

在对图表轴进行样式设置时,出版物中的常见样式是仅在Y轴的最顶部标签上包含单位或百分号。我试图找出如何在Highcharts中做到这一点。

我知道我可以对一个数字进行硬编码,例如:

 yAxis: {
    labels: {
        formatter: function() {
            if ( this.value == 12 ) {
               return this.value + "%";
            } else {
               return this.value;
            }
        }
    },

但这不是一个非常灵活的解决方案。

有没有办法测试显示的第一个(或第n个)值?有没有办法在格式化函数中获取值的索引?

2013年更新

这适用于大多数情况:

if ( this.value == this.axis.getExtremes().max )
    return this.value + '%';
else 
    return this.value;

但是,如果yAxis.endOnTick设置为false,则有效 - 因为在这种情况下,轴的最大与轴上最高的标签

有没有办法从格式化程序函数中获得最高的 标签

4 个答案:

答案 0 :(得分:3)

据我所知,在轴上找不到'nth'项是不可能的,但是第一个和最后一个可以使用属性this.isFirstthis.isLast' in stead of checking this.value来圆顶。

如果您愿意,您也可以使用this.axis直接访问轴本身,这样您就可以在轴上运行您想要的任何复杂逻辑。

答案 1 :(得分:2)

使用4.2.x版本的高图我已经用以下代码实现了它

labels: {
    formatter: function () {
        if(this.isFirst)
            return this.value + "%";
        else
            return this.value;
        }
    }
}

答案 2 :(得分:0)

您还可以将[%]添加到yAxis的名称中。然后你就不必篡改蜱。

答案 3 :(得分:0)

您可以以最大值plotLine绘制,并在更改极值后删除并添加新值。然后标记该plotLine您可以设置为'%'并移动到左侧。

另一个解决方案是使用轴标题 - 将其设置为顶部并移除旋转。

最后的解决方案(或更确切地说是解决方法)是使用第二个yAxis,并设置min和max(或tickPositions),并仅显示最后一个标签,然后首先隐藏。