html折线图不同区间不同颜色,当超出区域范围时,Html5折线图具有不同的颜色

我想在一个图表上绘制一个区域范围图表和一条线,我希望该线条在区域范围内时为黑色,而在区域范围之外时则为红色,如图片所示。

OXpp8.png

我使用下面的代码绘制区域范围,但我不知道如何在区域范围之外绘制不同颜色的线条。

http://jsfiddle.net/2cVGX/

$(function () {

var limits = [

[64064, 14.3, 27.7],

[64928, 14.5, 27.8],

[65792, 15.5, 29.6],

[66656, 16.7, 30.7],

[67520, 16.5, 25.0],

[68384, 17.8, 25.7],

[69248, 13.5, 24.8],

[70112, 10.5, 21.4],

[70976, 09.2, 23.8],

[71840, 11.6, 21.8],

[72704, 10.7, 23.7],

[73568, 11.0, 23.3],

[74432, 11.6, 23.7],

[75296, 11.8, 20.7],

[76160, 12.6, 22.4],

[77024, 13.6, 19.6],

[77888, 11.4, 22.6],

[78752, 13.2, 25.0],

[79616, 14.2, 21.6],

[80480, 13.1, 17.1],

[81344, 12.2, 15.5],

[82208, 12.0, 20.8],

[83072, 12.0, 17.1],

[83936, 12.7, 18.3],

[84800, 12.4, 19.4],

[85664, 12.6, 19.9],

[86528, 11.9, 20.2],

[87392, 11.0, 19.3],

[88256, 10.8, 17.8],

[89120, 11.8, 18.5],

[89984, 10.8, 16.1]

],

values = [

[64064, 21.5],

[64928, 22.1],

[65792, 23.0],

[66656, 23.8],

[67520, 21.4],

[68384, 21.3],

[69248, 18.3],

[70112, 15.4],

[70976, 16.4],

[71840, 17.7],

[72704, 17.5],

[73568, 17.6],

[74432, 17.7],

[75296, 16.8],

[76160, 17.7],

[77024, 16.3],

[77888, 17.8],

[78752, 18.1],

[79616, 17.2],

[80480, 14.4],

[81344, 13.7],

[82208, 17.7],

[83072, 20.6],

[83936, 20.3],

[84800, 19.3],

[85664, 15.8],

[86528, 15.2],

[87392, 14.8],

[88256, 14.4],

[89120, 15],

[89984, 13.6]

],

targets = [

[64064, 22.5],

[64928, 23.1],

[65792, 21.0],

[66656, 22.8],

[67520, 20.4],

[68384, 22.3],

[69248, 18.4],

[70112, 15.5],

[70976, 16.4],

[71840, 17.6],

[72704, 18.6],

[73568, 19.6],

[74432, 18.7],

[75296, 17.8],

[76160, 17.7],

[77024, 16.5],

[77888, 16.8],

[78752, 17.1],

[79616, 17.5],

[80480, 15.4],

[81344, 14.7],

[82208, 16.7],

[83072, 15.6],

[83936, 15.3],

[84800, 15.5],

[85664, 15.8],

[86528, 15.2],

[87392, 15.8],

[88256, 15.4],

[89120, 15.3],

[89984, 14.6]

];

$('#container').highcharts({

title: {

text: null

},

xAxis: {

title: {

text: null

},

type: 'linear',

labels: {

enabled: false

},

lineWidth: 0,

tickWidth: 0

},

yAxis: {

title: {

text: null

},

labels: {

enabled: false

},

gridLineWidth: 0

},

tooltip: {

crosshairs: true,

shared: true,

valueSuffix: 'Virt'

},

legend: {

enabled: false

},

series: [{

id: 'valueLine',

name: 'Value',

type: 'spline',

data: values,

zIndex: 1,

color: 'black',

shadow: true,

marker: {

fillColor: 'black',

lineWidth: 1,

radius: 2,

lineColor: "white",

enabled: false,

symbol: 'circle'

}

}, {

id: 'targetLine',

name: 'Target',

type: 'spline',

data: targets,

linkedTo: 'valueLine',

zIndex: 1,

color: 'gray',

dashStyle: 'DashDot',

marker: {

fillColor: 'gray',

lineWidth: 1,

radius: 2,

lineColor: "white",

enabled: false,

symbol: 'circle'

}

}, {

id: 'limitsArea',

name: 'Limits',

data: limits,

type: 'areasplinerange',

lineWidth: 1,

lineColor: 'gray',

linkedTo: 'valueLine',

color: "lightGray",

fillOpacity: 0.3,

zIndex: 0

}]

});

});

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 `LimitLine` 和 `YAxis` 的 `addLimitLine()` 方法来实现根据不同的值范围填充不同颜色。下面是一个示例代码: ```java // 创建 LimitLine 并设置它的位置和值 LimitLine limitLine1 = new LimitLine(50f, "Limit 1"); limitLine1.setLineColor(Color.RED); limitLine1.setLineWidth(2f); limitLine1.enableDashedLine(10f, 10f, 0f); LimitLine limitLine2 = new LimitLine(100f, "Limit 2"); limitLine2.setLineColor(Color.GREEN); limitLine2.setLineWidth(2f); limitLine2.enableDashedLine(10f, 10f, 0f); // 将 LimitLine 添加到 YAxis 上 YAxis yAxisLeft = lineChart.getAxisLeft(); yAxisLeft.addLimitLine(limitLine1); yAxisLeft.addLimitLine(limitLine2); // 设置填充色 Drawable drawable = ContextCompat.getDrawable(this, R.drawable.fade_red); lineChart.getRenderer().setFillFormatter(new MyFillFormatter(drawable)); ``` 在上面的代码中,我们首先创建了两个 `LimitLine` 对象,并设置它们的位置和样式。然后,将这两个 `LimitLine` 添加到 `YAxis` 的实例上。最后,我们设置了填充色,并将其传递给自定义的 `MyFillFormatter` 对象,这个对象负责根据图表的值范围来填充不同颜色。 ```java public class MyFillFormatter implements IFillFormatter { private Drawable drawable; public MyFillFormatter(Drawable drawable) { this.drawable = drawable; } @Override public float getFillLinePosition(ILineDataSet dataSet, LineDataProvider dataProvider) { return 0; } @Override public Drawable getFillDrawable(ILineDataSet dataSet) { return drawable; } } ``` 在自定义的 `MyFillFormatter` 类中,我们实现了 `IFillFormatter` 接口,重写了其中的两个方法。其中,`getFillLinePosition()` 方法用于返回填充线的位置,这里我们返回了 0,表示使用默认的填充线位置。`getFillDrawable()` 方法用于返回填充色的 `Drawable` 对象,这里我们直接返回了构造函数中传递的 `Drawable` 对象。 这样,当你的折线图的值范围跨越了 `LimitLine` 对象所指定的值,就会自动填充设置的颜色了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值