gpt4 book ai didi

Highcharts:散点图中 X 轴和 Y 轴在零处交叉

转载 作者:行者123 更新时间:2023-12-03 21:59:18 24 4
gpt4 key购买 nike

在 highcharts 中,我想绘制一个散点图/气泡图,其中 x 值的范围从 -50 到 +50,y 值的范围从 -100 到 +100。有没有办法绘制 x 和 y 轴,以便它们在图表中心交叉为零?

我试过在轴中使用 'offset' 参数,它确实移动了轴,例如http://bit.ly/Xd9Z51但是这种方法存在以下问题:

  • 您无法动态设置偏移参数,因此如果一系列更新和更改最小/最大 x/y 值,则轴不再在零处交叉。
  • 如果缩放,轴不再在零处交叉。
  • 考虑到 div 大小、边距、标题等,很难计算以像素为单位的偏移量。
  • 调整包含 div 的大小会导致所需的轴偏移位置发生变化。
  • 最佳答案

    Highcharts v7.2+解决方案

    强制一些选项以防止图表为轴保留空间,然后使用插件:

    (function(H) {
    H.addEvent(
    H.Axis,
    'init',
    function(e) {
    if (H.defined(e.userOptions.matchAxis)) {
    H.merge(
    true,
    e.userOptions, {
    labels: {
    reserveSpace: false
    },
    title: {
    reserveSpace: false
    },
    offset: -1,
    opposite: this.isXAxis ? true : false
    }
    );
    }
    }
    );

    H.addEvent(
    H.Chart,
    'render',
    function() {
    let chart = this;

    chart.axes.forEach(function(axis) {

    let newOffset,
    matchAxis = axis.options.matchAxis,
    translate = axis.horiz ? 'translateY' : 'translateX',
    newTranslation = {},
    offset = axis.options.offset || 0,
    crisp = axis.options.lineWidth % 2,
    otherAxes = axis.isXAxis ? chart.yAxis : chart.xAxis;

    if (H.defined(matchAxis)) {
    newOffset = otherAxes[matchAxis.index || 0].toPixels(matchAxis.value || 0, true);

    newTranslation[translate] = newOffset + offset + crisp;

    if (axis.axisGroup) {
    axis.axisGroup.animate(newTranslation);
    }
    if (axis.labelGroup) {
    axis.labelGroup.animate(newTranslation);
    }
    }
    });
    }
    );
    })(Highcharts);

    演示: https://jsfiddle.net/BlackLabel/2k0bw6q3/

    插件的API:
  • x/yAxis.matchAxis.value - 设置应从相反轴拾取的值。默认为 0。
  • x/yAxis.matchAxis.index - 当使用多个轴时,设置索引应该使用哪个相对轴进行计算。默认为 0。

  • 设置例如 yAxis.matchAxis = {}完全没问题: https://jsfiddle.net/BlackLabel/qwyczoxb/ (因为默认)

    强制选项列表(在插件中):
  • x/yAxis.labels.reserveSpace为假
  • x/yAxis.title.reserveSpace为假
  • x/yAxis.offset为负值(例如 -50)
  • xAxis.opposite设置为 true
  • yAxis.opposite设置为 false

  • 注:仅使用 测试v7.2.0

    旧解决方案 (v3+)

    现在唯一的解决方案是使用偏移参数。但是,从 Highcharts 3.0 开始,您可以自由控制该属性并更新轴:
    chart.yAxis[index].update( options );

    其中 options 是具有 yAxis 选项的对象,包括偏移量。要获取像素位置,您可以使用内部函数 chart.xAxis[index].translate(value) (有点hacky,但有效)。因此,当两者结合时,请参见示例: http://jsfiddle.net/UGpPV/6/

    关于Highcharts:散点图中 X 轴和 Y 轴在零处交叉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15140426/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com