2

jqPlot を使用して 1 つのページに 3 つの個別のグラフを作成したいのですが、カーソルが 1 つのグラフを横切って移動すると、垂直線も他のグラフを横切って移動するように jqPlot を構成することは可能ですか?

4

2 に答える 2

2

また、2つのチャートで同時に垂直線を追跡する必要があり、ボロの答えを出発点として使用して、これが私が思いついたものです:

var mydata1 = [
    [0, 3],
    [1, 7],
    [2, 9],
    [3, 1],
    [4, 4],
    [5, 6],
    [6, 8],
    [7, 2],
    [8, 5]
];
var mydata2 = [
    [0, 5],
    [1, 4],
    [2, 8],
    [3, 7],
    [4, 2],
    [5, 8],
    [6, 5],
    [7, 1],
    [8, 3]
];
$(document).ready(function () {
    var plot1 = $.jqplot(
        'chart1', [mydata1], {
        seriesDefaults: {
            showMarker: false
        },
        cursor: {
            show: true,
            showTooltip: false,
            showVerticalLine: true,
            showHorizontalLine: false
        },
        highlighter: {
            show: true,
            showTooltip: false
        },
        canvasOverlay: {
            show: true,
            objects: [{
                verticalLine: {
                    show: false,
                    name: "vline1",
                    xOffset: '-1',
                    yOffset: '0',
                    xaxis: "xaxis",
                    lineWidth: '0.5',
                    shadow: false
                }
            }]
        }
    });
    var plot2 = $.jqplot(
        'chart2', [mydata2], {
        seriesDefaults: {
            showMarker: false
        },
        cursor: {
            show: true,
            showTooltip: false,
            showVerticalLine: true,
            showHorizontalLine: false
        },
        highlighter: {
            show: true,
            showTooltip: false
        },
        canvasOverlay: {
            show: true,
            objects: [{
                verticalLine: {
                    show: false,
                    name: "vline2",
                    xOffset: '-1',
                    yOffset: '0',
                    xaxis: "xaxis",
                    lineWidth: '0.5',
                    shadow: false
                }
            }]
        }
    });

    var co1 = plot1.plugins.canvasOverlay;
    var co2 = plot2.plugins.canvasOverlay;
    var line1 = co1.get('vline1');
    var line2 = co2.get('vline2');

    $("#chart1").bind('jqplotMouseMove', function (ev, gridpos, datapos, neighbor, data) {
        line2.options.show = true;
        line2.options.x = datapos.xaxis;
        co2.draw(plot2);
    });

    $("#chart2").bind('jqplotMouseMove', function (ev, gridpos, datapos, neighbor, data) {
        line1.options.show = true;
        line1.options.x = datapos.xaxis;
        co1.draw(plot1);
    });

    $("#chart1").bind('jqplotMouseLeave', function () {
        line2.options.show = false;
        co2.draw(plot2);
    });

    $("#chart2").bind('jqplotMouseLeave', function () {
        line1.options.show = false;
        co1.draw(plot1);
    });
});

デモはこちら

于 2013-08-12T20:43:23.953 に答える
1

はい、できます。あなたのアプローチでは、プロット上のマウスの位置を追跡する必要があります。

$('#chart').bind('jqplotMouseMove', function(ev, seriesIndex, pointIndex, data) {
    //do your painting here
}); 

次に、プロット内でマウスを動かすたびに、他のプロットのキャンバスでカスタム ペイントを行います。この例では、コード レベルからのプロット データのハイライトを示すカスタム ペイントを行います。

于 2012-05-28T16:00:14.477 に答える