echarts条纹饼状图实现颜色渐变

var data = [];
var labelData = [];
var color = fColorGradualChange("#ffffff", "#00abee", 60)
for (var i = 0; i < 100; ++i) {
    data.push({
        value: Math.random() * 10 + 10 - Math.abs(i - 12),
        name: i + ':00'
    });
    labelData.push({
        value: 1,
        name: i ,
        itemStyle:{
            normal: {
                color: "#005197"
            }
        }
    });
}
for(var i=0;i<labelData.length;++i){
    if(labelData[i].name < 60){
        labelData[i].itemStyle = {
            normal: {
             color: color[i]
         }
        }
    }
}

option = {
    backgroundColor:'#100d40',
    title: {
        text: '60%',
        left: '50%',  
        textAlign: 'center',
        top: '45%',
        textStyle:{
            fontSize:60,
            color:'#fff'
        }
    },
    series: [{
        hoverAnimation:false,
        type: 'pie',
        data: labelData,
        radius: ['45%', '60%'],
        itemStyle: {
            normal: {
                borderWidth:2,
                borderColor: 'black'
            }
        },
        label: {
            normal: {
                position: 'inside',
                show:false,
            }
        }
    }]
};


/**
 *   颜色渐变
 *   num:颜色个数
 */
function fColorGradualChange(startColor, endColor, num) {
    var rgb = /^rgb|RGB\((([0-9]|[1-9]\d|1\d\d|2([0-4]\d|5[0-5])),){2}([0-9]|[1-9]\d|1\d\d|2([0-4]\d|5[0-5]))\)$/;    //rgb
    var hex = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i; //16进制
    //颜色预处理
    var startRGB, endRGB;
    if (hex.test(startColor)) {
        startRGB = fAnalysisRGB(startColor);
    } else if (rgb.test(startColor)) {
        startRGB = startColor.substring(3, 15).split(',');
    }
    if (hex.test(endColor)) {
        endRGB = fAnalysisRGB(endColor);
    } else if (rgb.test(startColor)) {
        endRGB = endColor.substring(3, 15).split(',');
    }
    var startR = startRGB[0], startG = startRGB[1], startB = startRGB[2];
    var endR = endRGB[0], endG = endRGB[1], endB = endRGB[2];
 
    var sR = (endR - startR) / num;
    var sG = (endG - startG) / num;
    var sB = (endB - startB) / num;
 
    var colors = [];
    for (var i = 0; i < num; i++) {
        colors .push(fColorToHex(parseInt((sR * i + startR)), parseInt((sG * i + startG)), parseInt((sB * i + startB))));
    }
    return colors ;
}
 
 
/**
 *   解析rgb格式
 */
function fAnalysisRGB(color) {
    var color = color.toLowerCase().substring(1, color.length);
    var colors= [];
    colors.push(parseInt(color.substring(0, 2), 16))
    colors.push(parseInt(color.substring(2, 4), 16))
    colors.push(parseInt(color.substring(4, 6), 16))
    return colors;
}
 
/**
 *   rgb转hex
 */
function fColorToHex(r, g, b) {
    var hex = "#" + fAddZero(r.toString(16)) + fAddZero(g.toString(16)) + fAddZero(b.toString(16));
    return hex;
}
 
/**
 *   加0补位
 */
function fAddZero(v) {
    var newv = "00" + v;
    return newv.substring(newv.length - 2, newv.length);
}

在这里插入图片描述
颜色渐变方法此处转载

Echarts 中,可以通过设置 series 中的 itemStyle 属性来定义柱状图的背景样式,包括条纹颜色。具体做法如下: ```javascript option = { // 其他配置项... series: [{ type: 'bar', data: [10, 20, 30, 40, 50], itemStyle: { normal: { color: { type: 'pattern', image: 'bar_pattern', // 背景条纹图片的名称,需要在全局设置中定义 repeat: 'repeat' // 设置重复方式为 repeat } } } }] }; ``` 在全局设置中,还需要定义背景条纹图片的名称和对应的图片地址: ```javascript option = { // 其他配置项... backgroundColor: { // 图表背景颜色 type: 'pattern', image: 'background_pattern', // 背景条纹图片的名称 repeat: 'repeat' // 设置重复方式为 repeat }, visualMap: { // 颜色映射配置 min: 0, max: 100, inRange: { color: ['#FF0000', '#00FF00'] // 设置柱状图的颜色范围 } }, graphic: [{ type: 'image', id: 'bar_pattern', // 背景条纹图片的名称,需要在 series 中引用 left: 0, top: 0, zlevel: -1, bounding: 'all', style: { image: 'data:image/png;base64,iVBORw0KG...', // 背景条纹图片的地址,可以是 Base64 编码 width: 10, height: 10 } }, { type: 'image', id: 'background_pattern', // 背景条纹图片的名称,需要在 backgroundColor 中引用 left: 0, top: 0, zlevel: -1, bounding: 'all', style: { image: 'data:image/png;base64,iVBORw0KG...', // 背景条纹图片的地址,可以是 Base64 编码 width: 100, height: 100 } }] }; ``` 以上是一种通过背景条纹图片实现柱状图背景样式的方法,你可以根据需求自定义背景图片,并根据实际情况进行相应的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值