【问题标题】:Logarithmic Axis issue with HighChartsHighCharts 的对数轴问题
【发布时间】:2013-03-26 18:50:05
【问题描述】:

我们正在使用对数刻度比较多个系列。大多数情况下,图表看起来很好,并且可以正确缩放到数据的最小/最大值。在下面的示例中,顶部系列被切断。唯一改变的是数据。如果我们将时间段更改为任何其他选项,它将正确重新缩放,回到 1Y 有同样的问题。有没有办法解决这个问题?

我的第二个问题是关于在对数刻度时网格线/标签的逻辑。默认情况下,这些步骤不应该基于 Log(10),例如 [0.10%, 1%, 10%, 100%, 1000%]?是否有配置选项来设置它?在下面的示例中,默认的 [0.10, 0.20, 0.40, 1.00] 没有多大意义。

标签/刻度应始终如下所示: jsfiddle.net/TeTMw/1

编辑:

这是导致此错误的 highcharts 代码。如果您能帮助解决此问题,那就太好了。

// Second case: We need intermediary ticks. For example 
            // 1, 2, 4, 6, 8, 10, 20, 40 etc. 
        } else if (interval >= 0.08) {
            var roundedMin = mathFloor(min),
                intermediate,
                i,
                j,
                len,
                pos,
                lastPos,
                break2;

            if (interval > 0.3) {
                intermediate = [1, 2, 4];
            } else if (interval > 0.15) { // 0.2 equals five minor ticks per 1, 10, 100 etc
                intermediate = [1, 2, 4, 6, 8];
            } else { // 0.1 equals ten minor ticks per 1, 10, 100 etc
                intermediate = [1, 2, 3, 4, 5, 6, 7, 8, 9];
            }

            for (i = roundedMin; i < max + 1 && !break2; i++) {
                len = intermediate.length;
                for (j = 0; j < len && !break2; j++) {
                    pos = log2lin(lin2log(i) * intermediate[j]);

                    if (pos > min && lastPos <= max) {
                        positions.push(lastPos);
                    }

                    if (lastPos > max) {
                        break2 = true;
                    }
                    lastPos = pos;
                }
            }

【问题讨论】:

  • 你如何使用与对数轴比较?在对数刻度的 Highstock 中,只允许正值。你能在 jsFiddle 上重新创建示例吗?

标签: highcharts highstock


【解决方案1】:
  1. 存在一个已知问题,即在 Highcharts 1.3.0 中日志轴可能会被切断。这将在本周晚些时候发布的 1.3.1 中修复。见https://github.com/highslide-software/highcharts.com/issues/1666

  2. 有关 Y 轴刻度间隔,请参阅http://api.highcharts.com/highcharts#yAxis.tickInterval。默认情况下,tickInterval 为 null,因此刻度的布局由 tickPixelInterval 确定。例如,在您的特定图表中,如果我们跳过 0.20 和 0.40,那么对于默认的 tickPixelInterval 72,刻度将变得过于普遍。

【讨论】:

  • 感谢托斯坦的回复。我的第二个问题不是关于 tickInterval 间距,而是可以选择强制对数比例始终为 log10 [.01, .10, 1, 10, 100]?我看不出标签/步骤的 [0.4, 0.10, 0.20, 0.40, 1.00] 对上面显示的数据有何用处?
  • 我希望上面的数据始终以对数比例显示jsfiddle.net/TeTMw/1
  • 关于你的第二个问题,你需要重新计算值,见例子:jsfiddle.net/TeTMw/2
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-09
相关资源
最近更新 更多