在jqplot中,如何在鼠标悬停时将数据的刻度标签显示在工具提示中?

时间:2013-11-26 19:23:34

标签: jqplot

在jqplot中,我有一些带有x轴标签的数据。我正在尝试使用jqplot.highlight插件在工具提示中显示x标签,当我将鼠标悬停在点(see this js-fiddle page with the same code)

上时,该标签会弹出
var wallclock_delta =  [ ["A", 1.78 ] , ["B", 0.02 ] , ["C", 0.23 ] ];
var wallclock_cummulative =  [ ["A", 1.80 ] , ["B", 1.82 ] , ["C", 2.05 ] ];

$.jqplot('chartdiv',  [wallclock_delta,wallclock_cummulative],{
    title: "Times",    
    axesDefaults: {
        tickRenderer: $.jqplot.CanvasAxisTickRenderer ,
        tickOptions: {
          angle: -45,
          fontSize: '10pt'
        }
    },
    axes: {
        xaxis: {
            renderer: $.jqplot.CategoryAxisRenderer,
        },
        yaxis: {
            label: 'left_y_axis',
        },
        y2axis: {
            label: 'right_y_axis',
        }
    },
    highlighter: {
        show: true,
        sizeAdjust: 7.5,
        useAxesFormatters : true
    },
    series:[
        {yaxis:'yaxis', label:'wallclock_delta'},
        {yaxis:'y2axis', label:'wallclock_cummulative'}]

});

不幸的是,我正在获取系列的索引而不是标签: improper tooltip

当我将鼠标悬停在数据点上时,如何获取我在数组wallclock_deltawallclock_cummulative中指定的字符串标签?

1 个答案:

答案 0 :(得分:4)

我发现了这个问题。在我的例子中,我可以为xaxis ticks编写自定义格式化程序,如果我检测到数据系列的索引而不是字符串标签,我可以通过查看原始数组来返回字符串。否则,请执行默认行为:

var my_special_x_axis_formatter = function (formatString, value) {
    var array_index = parseInt(value) || -1;
    if (array_index >= 0 && array_index < wallclock_delta.length) {
        return wallclock_delta[array_index][0];
    } else {
        return $.jqplot.DefaultTickFormatter(formatString,value);
    }

} 
$.jqplot[...]
    axes: {
    xaxis: {
        tickOptions:{formatter: my_special_x_axis_formatter}
[...]

完全在js-fiddle