/* * @Author: changjun * @FilePath: /yuan-qingdao-zld-browser/src/components/chart/options/theme.ts * @Date: 2022-09-05 15:33:45 * @Description: * @LastEditTime: 2023-08-08 14:48:53 * @LastEditors: 李佐宁 */ import { mapMapping } from '@/assets/map/provinceData'; const mapData = mapMapping(); /** * 自定义不同echart图形颜色 * themeColor = { * shangdong(区域): { * colorList: 10种颜色 * colorListAll: 20种颜色 * } * } */ export const themeColor = { shandong: { colorList: [ // 默认可视化图形颜色 'rgba(111, 216, 255, 1)', 'rgba(125, 190, 135, 1)', 'rgba(255, 219, 134, 1)', 'rgba(255, 125, 132, 1)', 'rgba(102, 255, 225, 1)', 'rgba(255, 149, 108, 1)', 'rgba(208, 142, 255, 1)', 'rgba(137, 141, 255, 1)', 'rgba(240, 182, 125, 1)', 'rgba(255, 139, 182, 1)', ], colorListAll: [ 'rgba(111, 216, 255, 1)', 'rgba(146, 184, 196, 1)', 'rgba(125, 190, 135, 1)', 'rgba(162, 200, 195, 1)', 'rgba(255, 219, 134, 1)', 'rgba(159, 182, 221, 1)', 'rgba(255, 125, 132, 1)', 'rgba(154, 193, 216, 1)', 'rgba(102, 255, 225, 1)', 'rgba(164, 174, 194, 1)', 'rgba(255, 149, 108, 1)', 'rgba(177, 172, 208, 1)', 'rgba(208, 142, 255, 1)', 'rgba(202, 171, 169, 1)', 'rgba(137, 141, 255, 1)', 'rgba(208, 185, 170, 1)', 'rgba(240, 182, 125, 1)', 'rgba(206, 193, 151, 1)', 'rgba(255, 139, 182, 1)', 'rgba(207, 184, 205, 1)', ], LinearGradient: [ ['#764D90', '#484FBD'], ['#35399A', '#4C5BCE'], ['#4E8A6E', '#46B36B'], ['#2128BD', '#3869F9'], ], // 渐变色linear-gradient(90deg, rgba(38,156,200,0), #22D3E3); progressColor: 'linear-gradient(90deg, rgba(38,156,200,0), #22D3E3)', // 进度条 LinearGradientColor: '110, 200, 236', funnelColorList: [ 'rgba(46, 150, 224, 1)', 'rgba(46, 150, 224, .9)', 'rgba(46, 150, 224, .8)', 'rgba(46, 150, 224, .7)', 'rgba(46, 150, 224, .6)', 'rgba(46, 150, 224, .5)', 'rgba(46, 150, 224, .4)', 'rgba(46, 150, 224, .3)', 'rgba(46, 150, 224, .2)', 'rgba(46, 150, 224, .1)', ], // 漏斗图 // 折现渐变背景 // lineGradient: [ // ["rgba(111, 216, 255, 1)", "rgba(111, 216, 255, .1)"], // ["rgba(125, 190, 135, 1)", "rgba(125, 190, 135, .1)"], // ["rgba(255, 219, 134, 1)", "rgba(255, 219, 134, .1)"], // ["rgba(255, 125, 132, 1)", "rgba(255, 125, 132, .1)"], // ["rgba(102, 255, 225, 1)", "rgba(102, 255, 225, .1)"], // ["rgba(255, 149, 108, 1)", "rgba(255, 149, 108, .1)"], // ["rgba(208, 142, 255, 1)", "rgba(208, 142, 255, .1)"], // ["rgba(137, 141, 255, 1)", "rgba(137, 141, 255, .1)"], // ["rgba(240, 182, 125, 1)", "rgba(240, 182, 125, .1)"], // ["rgba(255, 139, 182, 1)", "rgba(255, 139, 182, .1)"], // ], }, // 山东直联点 anhui: { // 安徽直联点 colorList: [ 'rgba(4, 187, 206, 1)', 'rgba(90, 216,166,1)', 'rgba(91, 143, 249, 1)', 'rgba(109, 200, 236, 1)', 'rgba(93, 112, 146, 1)', 'rgba(146, 112, 202, 1)', 'rgba(232, 104, 74, 1)', 'rgba(255, 157, 77, 1)', 'rgba(246, 189, 22, 1)', 'rgba(255, 153, 195, 1)', ], colorListAll: [ 'rgba(4, 187, 206, 1)', '#AAD8D8', 'rgba(90, 216, 166, 1)', '#BDEFDB', 'rgba(91, 143, 249, 1)', '#BDD2FD', 'rgba(109, 200, 236, 1)', '#B6E3F5', 'rgba(93, 112, 146, 1)', '#C2C8D5', 'rgba(146, 112, 202, 1)', '#D5C5EA', 'rgba(232, 104, 74, 1)', '#F5C4B6', 'rgba(255, 157, 77, 1)', '#FFD7B9', 'rgba(246, 189, 22, 1)', '#FBE5A2', 'rgba(255, 153, 195, 1)', '#FFD6E7', ], lineColorList: [ // 自定义的线条颜色 'rgba(4, 187, 206, 1)', 'rgba(255, 157, 77, 1)', 'rgba(146, 112, 202, 1)', 'rgba(90, 216,166,1)', 'rgba(255, 153, 195, 1)', 'rgba(91, 143, 249, 1)', 'rgba(246, 189, 22, 1)', 'rgba(109, 200, 236, 1)', 'rgba(232, 104, 74, 1)', 'rgba(93, 112, 146, 1)', ], progressColor: 'linear-gradient(90deg, rgba(4,187,206,0.1) 0%, #04BBCE 100%)', // 进度条 LinearGradientColor: '4, 187, 206', funnelColorList: [ 'rgba(4, 187, 206, 1)', 'rgba(4, 187, 206, .9)', 'rgba(4, 187, 206, .8)', 'rgba(4, 187, 206, .7)', 'rgba(4, 187, 206, .6)', 'rgba(4, 187, 206, .5)', 'rgba(4, 187, 206, .4)', 'rgba(4, 187, 206, .3)', 'rgba(4, 187, 206, .2)', 'rgba(4, 187, 206, .1)', ], // 漏斗图 }, hubei: { colorList: [ // 默认可视化图形颜色 'rgba(111, 216, 255, 1)', 'rgba(125, 190, 135, 1)', 'rgba(255, 219, 134, 1)', 'rgba(255, 125, 132, 1)', 'rgba(102, 255, 225, 1)', 'rgba(255, 149, 108, 1)', 'rgba(208, 142, 255, 1)', 'rgba(137, 141, 255, 1)', 'rgba(240, 182, 125, 1)', 'rgba(255, 139, 182, 1)', ], colorListAll: [ 'rgba(111, 216, 255, 1)', 'rgba(146, 184, 196, 1)', 'rgba(125, 190, 135, 1)', 'rgba(162, 200, 195, 1)', 'rgba(255, 219, 134, 1)', 'rgba(159, 182, 221, 1)', 'rgba(255, 125, 132, 1)', 'rgba(154, 193, 216, 1)', 'rgba(102, 255, 225, 1)', 'rgba(164, 174, 194, 1)', 'rgba(255, 149, 108, 1)', 'rgba(177, 172, 208, 1)', 'rgba(208, 142, 255, 1)', 'rgba(202, 171, 169, 1)', 'rgba(137, 141, 255, 1)', 'rgba(208, 185, 170, 1)', 'rgba(240, 182, 125, 1)', 'rgba(206, 193, 151, 1)', 'rgba(255, 139, 182, 1)', 'rgba(207, 184, 205, 1)', ], LinearGradient: [ ['#764D90', '#484FBD'], ['#35399A', '#4C5BCE'], ['#4E8A6E', '#46B36B'], ['#2128BD', '#3869F9'], ], // 渐变色linear-gradient(90deg, rgba(38,156,200,0), #22D3E3); progressColor: 'linear-gradient(90deg, rgba(38,156,200,0), #22D3E3)', // 进度条 LinearGradientColor: '110, 200, 236', funnelColorList: [ 'rgba(46, 150, 224, 1)', 'rgba(46, 150, 224, .9)', 'rgba(46, 150, 224, .8)', 'rgba(46, 150, 224, .7)', 'rgba(46, 150, 224, .6)', 'rgba(46, 150, 224, .5)', 'rgba(46, 150, 224, .4)', 'rgba(46, 150, 224, .3)', 'rgba(46, 150, 224, .2)', 'rgba(46, 150, 224, .1)', ], // 漏斗图 // 折现渐变背景 // lineGradient: [ // ["rgba(111, 216, 255, 1)", "rgba(111, 216, 255, .1)"], // ["rgba(125, 190, 135, 1)", "rgba(125, 190, 135, .1)"], // ["rgba(255, 219, 134, 1)", "rgba(255, 219, 134, .1)"], // ["rgba(255, 125, 132, 1)", "rgba(255, 125, 132, .1)"], // ["rgba(102, 255, 225, 1)", "rgba(102, 255, 225, .1)"], // ["rgba(255, 149, 108, 1)", "rgba(255, 149, 108, .1)"], // ["rgba(208, 142, 255, 1)", "rgba(208, 142, 255, .1)"], // ["rgba(137, 141, 255, 1)", "rgba(137, 141, 255, .1)"], // ["rgba(240, 182, 125, 1)", "rgba(240, 182, 125, .1)"], // ["rgba(255, 139, 182, 1)", "rgba(255, 139, 182, .1)"], // ], }, // 湖北直联点 }; // 根据部署地区code获取颜色主题 let themeData; export const getThemeColor = () => { if (!themeData) { themeData = themeColor[mapData?.en] || {}; themeData.lineColorList = themeData.lineColorList || themeData.colorList; // 判断是否定义 themeData.lineGradient = themeData.lineColorList.map((item) => { // 折线渐变 return [item, item.replace(/\d(?=\))/, '0.1')]; }); } return themeData; }; // 柱状图图颜色默认定义 export const barChartThemeColor = { light: { legendTextColor: 'rgba(0,0,0,0.4000)', axisLabelColor: 'rgba(0,0,0,0.4000)', axisLineColor: 'rgba(0,0,0,0.05)', titleColor: 'rgba(0,0,0,0.4000)', colorList: mapData?.en === 'anhui' ? getThemeColor().lineGradient : getThemeColor().colorList || [ '#0095FF', '#FE7F09', '#E65857', '#4E9B40', '#45BCCA', '#677DFF', '#9E7AFE', '#F7C424', '#F481FF', '#DB00BC', ], }, dark: { legendTextColor: 'rgba(255,255,255,0.4)', axisLabelColor: 'rgba(255,255,255,0.5)', axisLineColor: 'rgba(159, 159, 159, .3)', titleColor: 'rgba(255,255,255,0.4000)', colorList: [ 'rgba(127, 148, 198, 1)', 'rgba(170, 183, 204, 1)', 'rgba(155, 155, 177, 1)', 'rgba(141, 128, 152, 1)', 'rgba(125, 101, 127, 1)', 'rgba(143, 115, 111, 1)', 'rgba(139, 104, 99, 1)', 'rgba(142, 105, 62, 1)', 'rgba(146, 99, 99, 1)', 'rgba(152, 128, 146, 1)', 'rgba(151, 146, 113, 1)', 'rgba(158, 157, 110, 1)', ], }, }; // echart通用主题色 export const chartCommonThemeColor = { light: { colorList: getThemeColor().colorList || [ '#0095FF', '#E65857', '#FE7F09', '#4E9B40', '#45BCCA', '#677DFF', '#9E7AFE', '#F7C424', '#F481FF', '#DB00BC', ], tooltip: { backgroundColor: 'rgba(9,103,138,0.8)', textStyle: { color: 'rgba(255,255,255,1)', }, }, }, dark: { colorList: getThemeColor().colorList || [ '#2B4BAA', '#52986B', '#A68F58', '#A83D61', '#378CBD', '#198A7A', '#AB5148', '#633E9A', '#CF9268', '#009ADD', ], tooltip: { backgroundColor: 'rgba(9,103,138,0.8)', textStyle: { color: 'rgba(255,255,255,1)', }, }, }, }; export const roseChartThemeColor = { light: { rich: { name: 'rgba(0,0,0,0.65)', value: 'rgba(0,0,0,0.4)', percent: 'rgba(0,0,0,0.4)', }, emptyCircleStyle: { color: 'rgba(0,0,0,0.4)', }, }, dark: { rich: { name: '#9AEFFF', value: 'rgba(255, 255, 255, 1)', percent: 'rgba(255, 255, 255, 1)', }, emptyCircleStyle: { color: 'rgba(255, 255, 255, .4)', }, }, }; export const getBarChartThemeColor = (theme) => { return barChartThemeColor[theme]; }; export const getRoseChartThemeColor = (theme) => { return roseChartThemeColor[theme]; }; export const getCommonTheme = (theme) => { return chartCommonThemeColor[theme]; };