我的最终目标是创建一个“区域范围”图表,该图表使用下面的示例背景图像,使得y轴上的给定值(例如56)始终由图像中的相同颜色/位置表示。
正如您在下面的小提琴中所看到的,我可以使用highcharts创建一个“区域范围”图表,该图表使用任意图像填充/遮蔽范围内的区域。但是,即使两个图表具有不同的(y轴)值,颜色也完全相同; 6月份“图1”的峰值与“图2”的颜色相同,即使它们的值不同(301对401)。
http://jsfiddle.net/malonso/YwuqD/1/
与填充颜色/图案有关的代码:
fillColor: {
pattern: 'http://i.stack.imgur.com/dezhE.png',
width: 10,
height: 300
}
是否有可能以某种方式指定背景图像应覆盖y轴上的特定范围?
示例图片:
更新:出于某种原因,在浏览器以外的浏览器中查看时,图表背景不再显示为渐变,因此我附上了小提琴的截图:
答案 0 :(得分: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)添加到图像的高度。
(您提供的代码只有轻微的改动)
差异有点微妙
答案 1 :(得分: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});
}