【问题标题】:Bold X-Axis Label on Point Hover in Highcharts Column ChartHighcharts 柱形图中点悬停上的粗体 X 轴标签
【发布时间】:2013-06-17 22:24:12
【问题描述】:

我正在使用包含 50 多行数据和 3 个不同系列的 Highcharts 柱形图 (http://www.highcharts.com/demo/column-basic)。由于这个数量和图表宽度的限制,x 轴标签靠得很近并且成束。

当用户将鼠标悬停在图表中的点/列上时,我想加粗或更改 x 轴标签的颜色。我知道有些事件可以绑定到每个点 (http://api.highcharts.com/highcharts#plotOptions.column.point.events),但我无法将任何样式更改链接到 x 轴标签。这是一个 jsFiddle (http://bit.ly/SpPvCW),其中包含该事件。代码块如下所示:

plotOptions: {
        series: {
            point: {
                events: {
                    mouseOver: function() {
                        $reporting.html('x: '+ this.x +', y: '+ this.y);
                    }
                }
            },
            events: {
                mouseOut: function() {                        
                    $reporting.empty();
                }
            }
        }
}

这个 jsFiddle (http://jsfiddle.net/4h7DW/1/) 包含一个柱形图,其中 x 轴标签被旋转。

xAxis: {
            labels: {
                rotation: -70,
                align: 'right',
                style: {
                    fontSize: '10px',
                    color:'#999',
                    fontFamily: 'Verdana, sans-serif'
                }
            }
},

同样,目标是在您悬停相关列/点时将 x 轴标签的颜色加粗或更改。

【问题讨论】:

    标签: jquery highcharts


    【解决方案1】:

    这是我刚刚创建的一个快速示例。我累了,还可以改进。它通过点索引将轴标签链接到鼠标悬停:

              series: {
                    point: {
                        events: {
                            mouseOver: function() {
                               $(this.series.chart.xAxis[0].labelGroup.element.childNodes[this.x]).css('fill', 'black');
                            },
                            mouseOut: function() {                       
                                 $(this.series.chart.xAxis[0].labelGroup.element.childNodes[this.x]).css('fill', '#999999');
                            }
                        }
                    }
                }
    

    小提琴here.

    【讨论】:

    • 感谢您的回复,这非常有效,并且与核心紧密相关!
    【解决方案2】:

    替代解决方案:使用 HTML 参数,然后使用 jquery 在 DOM 中查找 elemetn。

    http://jsfiddle.net/uPBvH/2/

    series: {
                    point: {
                        events: {
                            mouseOver: function() {                 $('.highcharts-axis-labels span').eq(this.x).addClass('active');
                            },
                            mouseOut: function() {                       
      $('.highcharts-axis-labels span').eq(this.x).removeClass('active');                        
                            }
                        }
                    }
                }
    

    【讨论】:

    • 感谢您的回复,这确实是一个很好的替代解决方案。我也喜欢使用 CSS 扩展样式的能力。
    • 如果您使用 HTML 版本的标签,您可以使用 CSS 样式,但您应该知道哪些 CSS 样式不能包含在导出文件中。
    猜你喜欢
    • 1970-01-01
    • 2017-09-14
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多