Echarts 玉玦图

玉玦图


data = [{
        name: "AAAA",
        value: 754
    },
    {
        name: "BBBB",
        value: 611
    },
    {
        name: "CCCC",
        value: 400
    },
    {
        name: "DDDD",
        value: 200
    }
];
let colorArr = ['#41d1a5', '#3cc4ff', '#07e373', '#019dff'];
arrName = getArrayValue(data, "name");
arrValue = getArrayValue(data, "value");
sumVal = eval(arrValue.join('+'));
objData = array2obj(data, "name");
optionData = getData(data)

function getArrayValue(array, key) {
    var res = [];
    if (array) {
        array.forEach(function(t) {
            res.push(t[key]);
        });
    }
    return res;
}

function array2obj(array, key) {
    var resObj = {};
    for (var i = 0; i < array.length; i++) {
        resObj[array[i][key]] = array[i];
    }
    return resObj;
}

function getData(data) {
    var res = {
        series: [],
        yAxis: []
    };
    let center=["25%", "50%"];
    for (let i = 0; i < data.length; i++) {
        let radius=[70 - i * 15 + '%', 65 - i * 15 + '%'];
        res.series.push({
            name: '',
            type: 'pie',
            clockWise: true, //顺时加载
            hoverAnimation: false, //鼠标移入变大
             radius,
            center,
            label: {
                show: false
            },
            itemStyle: {
                label: {
                    show: false,
                },
                labelLine: {
                    show: false
                },
                borderWidth: 5,
            },
            data: [{
                value: data[i].value,
                name: data[i].name
            }, {
                value: sumVal - data[i].value,
                name: '',
                itemStyle: {
                    color: "transparent",
                    borderWidth: 0
                },
                tooltip: {
                    show: false
                },
                hoverAnimation: false
            }]
        });
        res.series.push({
            name: '',
            type: 'pie',
            silent: true,
            z: 1,
            clockWise: true, //顺时加载
            hoverAnimation: false, //鼠标移入变大
            radius,
            center,
            label: {
                show: false
            },
            itemStyle: {
                label: {
                    show: false,
                },
                labelLine: {
                    show: false
                },
                borderWidth: 5,
            },
            data: [{
                value: 7.5,
                itemStyle: {
                    color: "transparent",
                    borderWidth: 0
                },
                tooltip: {
                    show: false
                },
                hoverAnimation: false
            }, {
                value: 2.5,
                name: '',
                itemStyle: {
                    color: "rgba(0,0,0,0)",
                    borderWidth: 0
                },
                tooltip: {
                    show: false
                },
                hoverAnimation: false
            }]
        });
        res.yAxis.push((data[i].value / sumVal * 100).toFixed(2) + "%");
    }
    return res;
}
// 环形图旁边的圆点颜色样式
let rich = {};
colorArr.map((item, index) => {
    rich['circle' + index] = {
        color: item,
        fontSize: 25,
        lineHeight:60
    };
})
// 图例的样式
let legendRich = {
    value: {
        fontSize: 18,
        lineHeight: 30,
        color: "#fff",
        padding:[0,0,0,20]
    },
    per:{
        fontSize: 20,
        lineHeight: 30,
        color: "#fff",
        padding:[0,0,0,20]
    }
};
colorArr.map((item, index) => {
    legendRich['title' + index] = {
        fontSize: 16,
        lineHeight: 15,
        color: item,
         padding:[0,0,0,20]
    };
})
option = {
    backgroundColor: '#000',
    color: colorArr,
    legend: {
        show: true,
        icon: "circle",
        top: "center",
        right: '20%',
        data: arrName,
        width: 100,
        padding: [0, 5],
        itemGap: 25,
        formatter: function(name) {
            let str = ``;
            console.log("objData", objData)
            data.map((item, index) => {
                if (item.name == name) {
                    let per=(item.value/sumVal)*100;
                    str = `{value|${name}}{${'title'+index}|${per.toFixed(2)}%}{per|${(item.value)}}`
                }
            })
            return str;
        },
        textStyle: {
            rich: legendRich
        },
    },
    grid: {
        top: '13%',
        bottom: '58%',
        left: "20%",
        containLabel: false
    },
    yAxis: [{
        type: 'category',
        inverse: true,
        axisLine: {
            show: false
        },
        axisTick: {
            show: false
        },
        axisLabel: {
            show: true,
            interval: 0,
            inside: true,
            position:"right",
            formatter: function(v, i) {
                return `{${'circle'+i}|}`
            },
            rich

        },
        data: optionData.yAxis
    }],
    xAxis: [{
        show: false
    }],
    series: optionData.series
};

ending…

很抱歉,作为一个文本AI模型,我无法直接显示片。但是,你可以通过以下步骤来获取Echarts关系片: 1. 首先,你需要安装Echarts库。你可以在Echarts的官方网站(https://www.echartsjs.com/zh/index.html)上找到安装和使用文档。 2. 使用Echarts创建你想要的关系,并将其保存为片。你可以使用Echarts提供的API和配置选项来定义表的样式和数据。 3. 保存关系片。Echarts提供了`echarts.convertToImage`方法,可以将关系转换为片,并可以选择下载或保存。 以下是一个简单的示例代码,展示了如何使用Echarts创建一个关系并保存为片: ```javascript // 引入Echarts库 import echarts from 'echarts'; // 创建一个关系实例 const chart = echarts.init(document.getElementById('chart-container')); // 配置关系的样式和数据 const option = { // 配置选项... series: [{ type: 'graph', // 数据... }] }; // 设置关系的配置项 chart.setOption(option); // 将关系转换为片 chart.convertToImage({ type: 'png', // 片类型 pixelRatio: 1, // 分辨率 backgroundColor: '#fff', // 背景颜色 }); // 保存关系片 chart.saveAsImage('relation_chart.png'); ``` 请确保你已经正确安装了Echarts库,并在HTML文件中添加了一个具有唯一id的div元素(例如`<div id="chart-container"></div>`)作为关系的容器。 希望这能帮到你!如果你有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值