为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以在两个散点高图之间同步缩放?

是否可以在两个散点高图之间同步缩放?

德玛西亚99 2022-07-15 10:25:56
我想实现两件事。1 - 在上图中,假设顶部不存在。如果用户要单击底部图表上的任何点,我希望使用放大视图创建顶部图表。如果底部被单击并拖动,顶部应该跟随它。2 - 如果底部图表被放大,我希望顶部图表也被放大。例如:如果底部是 1 倍,顶部是 2 倍,如果我将底部放大 2 倍,顶部现在应该是 4 倍。这些可以用highcharts吗?
查看完整描述

1 回答

?
LEATH

TA贡献1936条经验 获得超7个赞

是的,这种行为在 Highcharts 中很容易实现。您需要做的就是使用Axis.afterSetExtremes事件 Point.click回调函数来创建或更新另一个具有适当轴极值的图表。例如:


var chart1,

  scale = 4;


function createOrUpdateDetail() {

  var isPointClick = !this.lin2log,

    chart = this.chart || this.series.chart,

    xMin = chart.xAxis[0].min,

    xMax = chart.xAxis[0].max,

    xRange = xMax - xMin,

    xCenter = (xMax + xMin) / 2,

    yMin = chart.yAxis[0].min,

    yMax = chart.yAxis[0].max,

    yRange = yMax - yMin,

    yCenter = (yMax + yMin) / 2,

    calcXMin,

    calcXMax,

    calcYMin,

    calcYMax;


  if (isPointClick) {

    xCenter = this.x;

    yCenter = this.y;

  }


  calcXMin = xCenter - xRange / scale;

  calcXMax = xCenter + xRange / scale;

  calcYMin = yCenter - yRange / scale;

  calcYMax = yCenter + yRange / scale;


  if (!chart1) {

    chart1 = Highcharts.chart('container', {

      series: [{

        type: 'scatter',

        data: this.series.options.data

      }],

      xAxis: {

        min: calcXMin,

        max: calcXMax,

      },

      yAxis: {

        endOnTick: false,

        startOnTick: false,

        min: calcYMin,

        max: calcYMax

      }

    });


  } else {

    chart1.update({

      xAxis: {

        min: calcXMin,

        max: calcXMax,

      },

      yAxis: {

        min: calcYMin,

        max: calcYMax

      }

    });

  }

}


Highcharts.chart('container2', {

  chart: {

    zoomType: 'xy',

    panning: true,

    panKey: 'shift'

  },

  yAxis: {

    endOnTick: false,

    startOnTick: false,

  },

  xAxis: {

    events: {

      afterSetExtremes: createOrUpdateDetail

    }

  },

  series: [{

    type: 'scatter',

    data: [...],

    point: {

      events: {

        click: createOrUpdateDetail

      }

    }

  }]

});

现场演示:http: //jsfiddle.net/BlackLabel/6m4e8x0y/4982/


API参考:


https://api.highcharts.com/highcharts/xAxis.events.afterSetExtremes


https://api.highcharts.com/highcharts/series.scatter.events.click


https://api.highcharts.com/class-reference/Highcharts.Chart#update


查看完整回答
反对 回复 2022-07-15
  • 1 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号