5

我的最终目标是创建一个“区域范围”图表,该图表使用下面的示例背景图像,以便 y 轴上的给定值(例如 56)始终由图像中的相同颜色/位置表示。

正如您在下面的小提琴中看到的那样,我可以使用 highcharts 创建一个“区域范围”图表,该图表使用任意图像来填充/着色范围内的区域。但是,即使两个图表具有不同的(y 轴)值,颜色也完全相同;“图表 1”上 6 月的峰值与“图表 2”的颜色相同,尽管它们的值不同(301 与 401)。

http://jsfiddle.net/malonso/YwuqD/1/

与填充颜色/图案有关的代码:

    fillColor: {
        pattern: 'http://i.stack.imgur.com/dezhE.png',
        width: 10,
        height: 300
    }

是否可以以某种方式指定背景图像应覆盖 y 轴上的特定范围?

示例图片:

在此处输入图像描述

更新:由于某种原因,在 chrome 以外的浏览器中查看时,图表背景不再显示为渐变,所以我附上了小提琴的截图:

在此处输入图像描述

4

2 回答 2

3

您也可以尝试在图表渲染后更新图像的位置。唯一的限制是知道一个点(例如,图案顶部的第一个像素应为值 500)。见例子:http: //jsfiddle.net/YwuqD/9/

创建模式时首先添加参考以供将来更新:

this.upgradeGradients = image;

然后在加载中使用这个:

        load: function() {
            var chart = this,
                image = chart.renderer.upgradeGradients,
                top = chart.yAxis[0].toPixels(500), //500 is the top of image - only for example value
                diff = chart.plotTop + top;

            image.attr({y : diff});
        }
于 2013-07-10T12:12:23.027 回答
3

当您渲染图表时,请使用:

/*********************************************************
* Generate the example chart
*********************************************************/
var chart = new Highcharts.Chart({

    chart: {
        renderTo: 'container'
    },

    title: {
        text: 'Chart 1'
    },

    xAxis: {
        categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    },
    series: [{
        type: 'arearange',
        data: testData,
        fillColor: {
            pattern: 'http://i.stack.imgur.com/dezhE.png',
            width: 10,
            height: 300 + Math.round(testData[0][0] / 100) * 100
        }
    }]

});

var chart2 = new Highcharts.Chart({

    chart: {
        renderTo: 'container2'
    },

    title: {
        text: 'Chart 2'
    },

    xAxis: {
        categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    },
    series: [{
        type: 'arearange',
        data: testData2,
        fillColor: {
            pattern: 'http://i.stack.imgur.com/dezhE.png',
            width: 10,
            height: 300 +  Math.round(testData2[0][0] / 100) * 100
        }
    }]

});

它将 Y 轴的起点 (Math.round(testData[0][0] / 100) * 100) 添加到图像的高度。

(您提供的代码只有微小的变化)

图表

差别有点微妙

于 2013-07-09T15:38:44.323 回答