首页 文章

HighCharts的Logarithmic Axis问题

提问于
浏览
0

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

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

This is what the labels/ticks should always look like: jsfiddle.net/TeTMw/1

Log scale issue

EDIT:

这是看起来像是导致这个bug的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;
                }
            }

1 回答

相关问题