Highcharts - 即使是间距不均匀的嘀嗒声

时间:2015-06-26 14:54:28

标签: highcharts

我正在研究一个要求,我需要在Y轴上有两个窗格,一个共同的x轴。我能够做到这一点。然而,在每个Y轴上,我需要从10到100的单位,其中例如10到50具有例如1厘米和50到100的间隔具有5厘米的间隔。 这在附加的丝网印刷中有描述。

我可以使用highstock的功能来实现这一目标吗?我研究了tickPixelInterval以及lograthmic轴但是不能走远:(

此外,即使我没有映射到它的数据点,我也需要确保y轴(10到100)上的比例始终显示。换句话说,如果我只有两个数据点,例如60和90,那么60以下的类别在图表上是不可见的。但是,我需要始终可以看到所有10到100的映射。

非常感谢任何帮助。谢谢你提前!

1 个答案:

答案 0 :(得分:1)

  1. 轴从10到100
  2. 使用轴的最小值和最大值可以设置比例。如果未保留比例(例如从11到99),则将startOnTick和endOnTick设置为false将解决问题。

    示例:http://jsfiddle.net/kcrv97sm/

    yAxis: {
        min: 10,
        max: 100,
        tickInterval: 10,
        showLastLabel: true,
        startOnTick: false,
        endOnTick: false
    }
    

    API: http://api.highcharts.com/highstock#yAxis.min http://api.highcharts.com/highstock#yAxis.startOnTick

    1. 不均匀的间距
    2. 默认的可用轴类型是“线性”,“对数”,“日期时间”或“类别”。

      在你的情况下这还不够。您可以尝试编写或应用自定义Highstock扩展 - 包装,然后更改比例。

      示例1 - 一个功能:http://jsfiddle.net/a3fLLyo4/73/

      示例2 - 两个功能:http://jsfiddle.net/a3fLLyo4/69/

      您必须提出将描述如何在轴上设置所有功能的功能。您没有指定在60到80之间是否应该是线性的或更复杂的。

      Highcharts.wrap(Highcharts.Axis.prototype, 'translate', function (proceed) {
          // Normal Translation
          var result = proceed.apply(this, [].slice.call(arguments, 1));
      
          // Apply curving
          if (this.options.curvature) {
              var val = 1 - Math.sqrt(1 - Math.pow(((arguments[1]-this.min) / (this.max - this.min)), 2)),
                  result = (this.len * val);
              if (arguments[2] == 0) {
                  result = this.len - result;
              }
          }
          return result;
      
      });