【更新】将前端示例的一些图表界面挪到另外一个仓库,默认不再长在里面

This commit is contained in:
俞宝山 2025-12-09 22:34:12 +08:00
parent fd47908733
commit 01b21cc068
84 changed files with 4 additions and 5728 deletions

View File

@ -249,6 +249,10 @@ QQ技术群732230670已满、685395081
</tr>
</table>
## 示例代码
从 v3.6.0,我们把前端示例的一些界面文件拿到了另外一个仓库,使用时可以自行下载:[https://gitee.com/xiaonuoadmin/snowy-exm](https://gitee.com/xiaonuoadmin/snowy-exm)
## 代码贡献
近期有很多热心开源的小伙伴陆续为咱们Snowy框架提交PR或者提出好的建议基本合格的PR我们都接受这样您的头像就列入到咱们Snowy仓库的贡献者列表啦

View File

@ -1,79 +0,0 @@
<template>
<div id="CustomizedPie"></div>
</template>
<!--ec官网https://echarts.apache.org/zh/index.html-->
<script setup name="CustomizedPie">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
onMounted(() => {
let Echarts = echarts.init(document.getElementById('CustomizedPie'))
const option = {
backgroundColor: '#2c343c',
title: {
text: 'Customized Pie',
left: 'center',
top: 20,
textStyle: {
color: '#ccc'
}
},
tooltip: {
trigger: 'item'
},
visualMap: {
show: false,
min: 80,
max: 600,
inRange: {
colorLightness: [0, 1]
}
},
series: [
{
name: 'Access From',
type: 'pie',
radius: '55%',
center: ['50%', '50%'],
data: [
{ value: 335, name: 'Direct' },
{ value: 310, name: 'Email' },
{ value: 274, name: 'Union Ads' },
{ value: 235, name: 'Video Ads' },
{ value: 400, name: 'Search Engine' }
].sort(function (a, b) {
return a.value - b.value
}),
roseType: 'radius',
label: {
color: 'rgba(255, 255, 255, 0.3)'
},
labelLine: {
lineStyle: {
color: 'rgba(255, 255, 255, 0.3)'
},
smooth: 0.2,
length: 10,
length2: 20
},
itemStyle: {
color: '#c23531',
shadowBlur: 200,
shadowColor: 'rgba(0, 0, 0, 0.5)'
},
animationType: 'scale',
animationEasing: 'elasticOut',
animationDelay: function (idx) {
return Math.random() * 200
}
}
]
}
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
})
</script>

View File

@ -1,57 +0,0 @@
<template>
<div id="DoughnutChartWithRoundedCorner"></div>
</template>
<!--ec官网https://echarts.apache.org/zh/index.html-->
<script setup name="DoughnutChartWithRoundedCorner">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
onMounted(() => {
let Echarts = echarts.init(document.getElementById('DoughnutChartWithRoundedCorner'))
const option = {
tooltip: {
trigger: 'item'
},
legend: {
top: '5%',
left: 'center'
},
series: [
{
name: 'Access From',
type: 'pie',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: '40',
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: [
{ value: 1048, name: 'Search Engine' },
{ value: 735, name: 'Direct' },
{ value: 580, name: 'Email' },
{ value: 484, name: 'Union Ads' },
{ value: 300, name: 'Video Ads' }
]
}
]
}
//
Echarts.setOption(option)
})
</script>

View File

@ -1,54 +0,0 @@
<template>
<div id="NightingaleChart"></div>
</template>
<!--ec官网https://echarts.apache.org/zh/index.html-->
<script setup name="NightingaleChart">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
onMounted(() => {
let Echarts = echarts.init(document.getElementById('NightingaleChart'))
const option = {
legend: {
top: 'bottom'
},
toolbox: {
show: true,
feature: {
mark: { show: true },
dataView: { show: true, readOnly: false },
restore: { show: true },
saveAsImage: { show: true }
}
},
series: [
{
name: 'Nightingale Chart',
type: 'pie',
radius: [20, 120],
center: ['50%', '50%'],
roseType: 'area',
itemStyle: {
borderRadius: 8
},
data: [
{ value: 40, name: 'rose 1' },
{ value: 38, name: 'rose 2' },
{ value: 32, name: 'rose 3' },
{ value: 30, name: 'rose 4' },
{ value: 28, name: 'rose 5' },
{ value: 26, name: 'rose 6' },
{ value: 22, name: 'rose 7' },
{ value: 18, name: 'rose 8' }
]
}
]
}
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
})
</script>

View File

@ -1,53 +0,0 @@
<template>
<div id="RefererOfAWebsite"></div>
</template>
<!--ec官网https://echarts.apache.org/zh/index.html-->
<script setup name="RefererOfAWebsite">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
onMounted(() => {
let Echarts = echarts.init(document.getElementById('RefererOfAWebsite'))
const option = {
title: {
text: '',
subtext: '',
left: 'center'
},
tooltip: {
trigger: 'item'
},
legend: {
orient: 'vertical',
left: 'left'
},
series: [
{
name: 'Access From',
type: 'pie',
radius: '50%',
data: [
{ value: 1048, name: 'Search Engine' },
{ value: 735, name: 'Direct' },
{ value: 580, name: 'Email' },
{ value: 484, name: 'Union Ads' },
{ value: 300, name: 'Video Ads' }
],
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
}
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
})
</script>

View File

@ -1,35 +0,0 @@
<template>
<div id="BasicCandlestick"></div>
</template>
<!--ec官网https://echarts.apache.org/zh/index.html-->
<script setup name="BasicCandlestick">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
onMounted(() => {
let Echarts = echarts.init(document.getElementById('BasicCandlestick'))
const option = {
xAxis: {
data: ['2017-10-24', '2017-10-25', '2017-10-26', '2017-10-27']
},
yAxis: {},
series: [
{
type: 'candlestick',
data: [
[20, 34, 10, 38],
[40, 35, 30, 50],
[31, 38, 33, 44],
[38, 15, 5, 42]
]
}
]
}
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
})
</script>

View File

@ -1,207 +0,0 @@
<template>
<div id="LargeScaleCandlestick"></div>
</template>
<!--ec官网https://echarts.apache.org/zh/index.html-->
<script setup name="LargeScaleCandlestick">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
const upColor = '#ec0000'
const upBorderColor = '#8A0000'
const downColor = '#00da3c'
const downBorderColor = '#008F28'
const dataCount = 2e5
const getSign = (data, dataIndex, openVal, closeVal, closeDimIdx) => {
let sign
if (openVal > closeVal) {
sign = -1
} else if (openVal < closeVal) {
sign = 1
} else {
// eslint-disable-next-line no-extra-parens
sign = dataIndex > 0 ? (data[dataIndex - 1][closeDimIdx] <= closeVal ? 1 : -1) : 1
}
return sign
}
const generateOHLC = (count) => {
let data = []
let xValue = Number(new Date(2011, 0, 1))
let minute = 60 * 1000
let baseValue = Math.random() * 12000
let boxVals = new Array(4)
let dayRange = 12
for (let i = 0; i < count; i++) {
baseValue = baseValue + Math.random() * 20 - 10
for (let j = 0; j < 4; j++) {
boxVals[j] = (Math.random() - 0.5) * dayRange + baseValue
}
boxVals.sort()
let openIdx = Math.round(Math.random() * 3)
let closeIdx = Math.round(Math.random() * 2)
if (closeIdx === openIdx) {
closeIdx++
}
let volumn = boxVals[3] * (1000 + Math.random() * 500)
// ['open', 'close', 'lowest', 'highest', 'volumn']
// [1, 4, 3, 2]
data[i] = [
// eslint-disable-next-line no-extra-parens
echarts.format.formatTime('yyyy-MM-dd\nhh:mm:ss', (xValue += minute)),
Number(boxVals[openIdx].toFixed(2)),
Number(boxVals[3].toFixed(2)),
Number(boxVals[0].toFixed(2)),
Number(boxVals[closeIdx].toFixed(2)),
Number(volumn.toFixed(0)),
getSign(data, i, Number(boxVals[openIdx]), Number(boxVals[closeIdx]), 4) // sign
]
}
return data
}
const data = generateOHLC(dataCount)
onMounted(() => {
let Echarts = echarts.init(document.getElementById('LargeScaleCandlestick'))
const option = {
dataset: {
source: data
},
title: {
text: 'Data Amount: ' + echarts.format.addCommas(dataCount)
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'line'
}
},
toolbox: {
feature: {
dataZoom: {
yAxisIndex: false
}
}
},
grid: [
{
left: '10%',
right: '10%',
bottom: 200
},
{
left: '10%',
right: '10%',
height: 80,
bottom: 80
}
],
xAxis: [
{
type: 'category',
boundaryGap: false,
// inverse: true,
axisLine: { onZero: false },
splitLine: { show: false },
min: 'dataMin',
max: 'dataMax'
},
{
type: 'category',
gridIndex: 1,
boundaryGap: false,
axisLine: { onZero: false },
axisTick: { show: false },
splitLine: { show: false },
axisLabel: { show: false },
min: 'dataMin',
max: 'dataMax'
}
],
yAxis: [
{
scale: true,
splitArea: {
show: true
}
},
{
scale: true,
gridIndex: 1,
splitNumber: 2,
axisLabel: { show: false },
axisLine: { show: false },
axisTick: { show: false },
splitLine: { show: false }
}
],
dataZoom: [
{
type: 'inside',
xAxisIndex: [0, 1],
start: 10,
end: 100
},
{
show: true,
xAxisIndex: [0, 1],
type: 'slider',
bottom: 10,
start: 10,
end: 100
}
],
visualMap: {
show: false,
seriesIndex: 1,
dimension: 6,
pieces: [
{
value: 1,
color: upColor
},
{
value: -1,
color: downColor
}
]
},
series: [
{
type: 'candlestick',
itemStyle: {
color: upColor,
color0: downColor,
borderColor: upBorderColor,
borderColor0: downBorderColor
},
encode: {
x: 0,
y: [1, 4, 3, 2]
}
},
{
name: 'Volumn',
type: 'bar',
xAxisIndex: 1,
yAxisIndex: 1,
itemStyle: {
color: '#7fbe9e'
},
large: true,
encode: {
x: 0,
y: 5
}
}
]
}
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
})
</script>

View File

@ -1,324 +0,0 @@
<template>
<div id="ShangHaiIndex"></div>
</template>
<!--ec官网https://echarts.apache.org/zh/index.html-->
<script setup name="ShangHaiIndex">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
//
const upColor = '#ec0000'
const upBorderColor = '#8A0000'
const downColor = '#00da3c'
const downBorderColor = '#008F28'
//
const splitData = (rawData) => {
const categoryData = []
const values = []
for (let i = 0; i < rawData.length; i++) {
categoryData.push(rawData[i].splice(0, 1)[0])
values.push(rawData[i])
}
return {
categoryData: categoryData,
values: values
}
}
//
const data0 = splitData([
['2013/1/24', 2320.26, 2320.26, 2287.3, 2362.94],
['2013/1/25', 2300, 2291.3, 2288.26, 2308.38],
['2013/1/28', 2295.35, 2346.5, 2295.35, 2346.92],
['2013/1/29', 2347.22, 2358.98, 2337.35, 2363.8],
['2013/1/30', 2360.75, 2382.48, 2347.89, 2383.76],
['2013/1/31', 2383.43, 2385.42, 2371.23, 2391.82],
['2013/2/1', 2377.41, 2419.02, 2369.57, 2421.15],
['2013/2/4', 2425.92, 2428.15, 2417.58, 2440.38],
['2013/2/5', 2411, 2433.13, 2403.3, 2437.42],
['2013/2/6', 2432.68, 2434.48, 2427.7, 2441.73],
['2013/2/7', 2430.69, 2418.53, 2394.22, 2433.89],
['2013/2/8', 2416.62, 2432.4, 2414.4, 2443.03],
['2013/2/18', 2441.91, 2421.56, 2415.43, 2444.8],
['2013/2/19', 2420.26, 2382.91, 2373.53, 2427.07],
['2013/2/20', 2383.49, 2397.18, 2370.61, 2397.94],
['2013/2/21', 2378.82, 2325.95, 2309.17, 2378.82],
['2013/2/22', 2322.94, 2314.16, 2308.76, 2330.88],
['2013/2/25', 2320.62, 2325.82, 2315.01, 2338.78],
['2013/2/26', 2313.74, 2293.34, 2289.89, 2340.71],
['2013/2/27', 2297.77, 2313.22, 2292.03, 2324.63],
['2013/2/28', 2322.32, 2365.59, 2308.92, 2366.16],
['2013/3/1', 2364.54, 2359.51, 2330.86, 2369.65],
['2013/3/4', 2332.08, 2273.4, 2259.25, 2333.54],
['2013/3/5', 2274.81, 2326.31, 2270.1, 2328.14],
['2013/3/6', 2333.61, 2347.18, 2321.6, 2351.44],
['2013/3/7', 2340.44, 2324.29, 2304.27, 2352.02],
['2013/3/8', 2326.42, 2318.61, 2314.59, 2333.67],
['2013/3/11', 2314.68, 2310.59, 2296.58, 2320.96],
['2013/3/12', 2309.16, 2286.6, 2264.83, 2333.29],
['2013/3/13', 2282.17, 2263.97, 2253.25, 2286.33],
['2013/3/14', 2255.77, 2270.28, 2253.31, 2276.22],
['2013/3/15', 2269.31, 2278.4, 2250, 2312.08],
['2013/3/18', 2267.29, 2240.02, 2239.21, 2276.05],
['2013/3/19', 2244.26, 2257.43, 2232.02, 2261.31],
['2013/3/20', 2257.74, 2317.37, 2257.42, 2317.86],
['2013/3/21', 2318.21, 2324.24, 2311.6, 2330.81],
['2013/3/22', 2321.4, 2328.28, 2314.97, 2332],
['2013/3/25', 2334.74, 2326.72, 2319.91, 2344.89],
['2013/3/26', 2318.58, 2297.67, 2281.12, 2319.99],
['2013/3/27', 2299.38, 2301.26, 2289, 2323.48],
['2013/3/28', 2273.55, 2236.3, 2232.91, 2273.55],
['2013/3/29', 2238.49, 2236.62, 2228.81, 2246.87],
['2013/4/1', 2229.46, 2234.4, 2227.31, 2243.95],
['2013/4/2', 2234.9, 2227.74, 2220.44, 2253.42],
['2013/4/3', 2232.69, 2225.29, 2217.25, 2241.34],
['2013/4/8', 2196.24, 2211.59, 2180.67, 2212.59],
['2013/4/9', 2215.47, 2225.77, 2215.47, 2234.73],
['2013/4/10', 2224.93, 2226.13, 2212.56, 2233.04],
['2013/4/11', 2236.98, 2219.55, 2217.26, 2242.48],
['2013/4/12', 2218.09, 2206.78, 2204.44, 2226.26],
['2013/4/15', 2199.91, 2181.94, 2177.39, 2204.99],
['2013/4/16', 2169.63, 2194.85, 2165.78, 2196.43],
['2013/4/17', 2195.03, 2193.8, 2178.47, 2197.51],
['2013/4/18', 2181.82, 2197.6, 2175.44, 2206.03],
['2013/4/19', 2201.12, 2244.64, 2200.58, 2250.11],
['2013/4/22', 2236.4, 2242.17, 2232.26, 2245.12],
['2013/4/23', 2242.62, 2184.54, 2182.81, 2242.62],
['2013/4/24', 2187.35, 2218.32, 2184.11, 2226.12],
['2013/4/25', 2213.19, 2199.31, 2191.85, 2224.63],
['2013/4/26', 2203.89, 2177.91, 2173.86, 2210.58],
['2013/5/2', 2170.78, 2174.12, 2161.14, 2179.65],
['2013/5/3', 2179.05, 2205.5, 2179.05, 2222.81],
['2013/5/6', 2212.5, 2231.17, 2212.5, 2236.07],
['2013/5/7', 2227.86, 2235.57, 2219.44, 2240.26],
['2013/5/8', 2242.39, 2246.3, 2235.42, 2255.21],
['2013/5/9', 2246.96, 2232.97, 2221.38, 2247.86],
['2013/5/10', 2228.82, 2246.83, 2225.81, 2247.67],
['2013/5/13', 2247.68, 2241.92, 2231.36, 2250.85],
['2013/5/14', 2238.9, 2217.01, 2205.87, 2239.93],
['2013/5/15', 2217.09, 2224.8, 2213.58, 2225.19],
['2013/5/16', 2221.34, 2251.81, 2210.77, 2252.87],
['2013/5/17', 2249.81, 2282.87, 2248.41, 2288.09],
['2013/5/20', 2286.33, 2299.99, 2281.9, 2309.39],
['2013/5/21', 2297.11, 2305.11, 2290.12, 2305.3],
['2013/5/22', 2303.75, 2302.4, 2292.43, 2314.18],
['2013/5/23', 2293.81, 2275.67, 2274.1, 2304.95],
['2013/5/24', 2281.45, 2288.53, 2270.25, 2292.59],
['2013/5/27', 2286.66, 2293.08, 2283.94, 2301.7],
['2013/5/28', 2293.4, 2321.32, 2281.47, 2322.1],
['2013/5/29', 2323.54, 2324.02, 2321.17, 2334.33],
['2013/5/30', 2316.25, 2317.75, 2310.49, 2325.72],
['2013/5/31', 2320.74, 2300.59, 2299.37, 2325.53],
['2013/6/3', 2300.21, 2299.25, 2294.11, 2313.43],
['2013/6/4', 2297.1, 2272.42, 2264.76, 2297.1],
['2013/6/5', 2270.71, 2270.93, 2260.87, 2276.86],
['2013/6/6', 2264.43, 2242.11, 2240.07, 2266.69],
['2013/6/7', 2242.26, 2210.9, 2205.07, 2250.63],
['2013/6/13', 2190.1, 2148.35, 2126.22, 2190.1]
])
//
const calculateMA = (dayCount) => {
let result = []
for (let i = 0, len = data0.values.length; i < len; i++) {
if (i < dayCount) {
result.push('-')
continue
}
let sum = 0
for (let j = 0; j < dayCount; j++) {
sum += Number(data0.values[i - j][1])
}
result.push(sum / dayCount)
}
return result
}
onMounted(() => {
let Echarts = echarts.init(document.getElementById('ShangHaiIndex'))
const option = {
title: {
text: '',
left: 0
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross'
}
},
legend: {
data: ['日K', 'MA5', 'MA10', 'MA20', 'MA30']
},
grid: {
left: '10%',
right: '10%',
bottom: '15%'
},
xAxis: {
type: 'category',
data: data0.categoryData,
boundaryGap: false,
axisLine: { onZero: false },
splitLine: { show: false },
min: 'dataMin',
max: 'dataMax'
},
yAxis: {
scale: true,
splitArea: {
show: true
}
},
dataZoom: [
{
type: 'inside',
start: 50,
end: 100
},
{
show: true,
type: 'slider',
top: '90%',
start: 50,
end: 100
}
],
series: [
{
name: '日K',
type: 'candlestick',
data: data0.values,
itemStyle: {
color: upColor,
color0: downColor,
borderColor: upBorderColor,
borderColor0: downBorderColor
},
markPoint: {
label: {
formatter: function (param) {
return param != null ? String(Math.round(param.value)) : ''
}
},
data: [
{
name: 'Mark',
coord: ['2013/5/31', 2300],
value: 2300,
itemStyle: {
color: 'rgb(41,60,85)'
}
},
{
name: 'highest value',
type: 'max',
valueDim: 'highest'
},
{
name: 'lowest value',
type: 'min',
valueDim: 'lowest'
},
{
name: 'average value on close',
type: 'average',
valueDim: 'close'
}
],
tooltip: {
formatter: function (param) {
return param.name + '<br>' + (param.data.coord || '')
}
}
},
markLine: {
symbol: ['none', 'none'],
data: [
[
{
name: 'from lowest to highest',
type: 'min',
valueDim: 'lowest',
symbol: 'circle',
symbolSize: 10,
label: {
show: false
},
emphasis: {
label: {
show: false
}
}
},
{
type: 'max',
valueDim: 'highest',
symbol: 'circle',
symbolSize: 10,
label: {
show: false
},
emphasis: {
label: {
show: false
}
}
}
],
{
name: 'min line on close',
type: 'min',
valueDim: 'close'
},
{
name: 'max line on close',
type: 'max',
valueDim: 'close'
}
]
}
},
{
name: 'MA5',
type: 'line',
data: calculateMA(5),
smooth: true,
lineStyle: {
opacity: 0.5
}
},
{
name: 'MA10',
type: 'line',
data: calculateMA(10),
smooth: true,
lineStyle: {
opacity: 0.5
}
},
{
name: 'MA20',
type: 'line',
data: calculateMA(20),
smooth: true,
lineStyle: {
opacity: 0.5
}
},
{
name: 'MA30',
type: 'line',
data: calculateMA(30),
smooth: true,
lineStyle: {
opacity: 0.5
}
}
]
}
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
})
</script>

View File

@ -1,100 +0,0 @@
<template>
<div id="CustomizedFunnel"></div>
</template>
<script setup name="CustomizedFunnel">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
const option = {
title: {
text: ''
},
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b} : {c}%'
},
toolbox: {
feature: {
dataView: { readOnly: false },
restore: {},
saveAsImage: {}
}
},
legend: {
data: ['Show', 'Click', 'Visit', 'Inquiry', 'Order']
},
series: [
{
name: 'Expected',
type: 'funnel',
left: '10%',
width: '80%',
label: {
formatter: '{b}Expected'
},
labelLine: {
show: false
},
itemStyle: {
opacity: 0.7
},
emphasis: {
label: {
position: 'inside',
formatter: '{b}Expected: {c}%'
}
},
data: [
{ value: 60, name: 'Visit' },
{ value: 40, name: 'Inquiry' },
{ value: 20, name: 'Order' },
{ value: 80, name: 'Click' },
{ value: 100, name: 'Show' }
]
},
{
name: 'Actual',
type: 'funnel',
left: '10%',
width: '80%',
maxSize: '80%',
label: {
position: 'inside',
formatter: '{c}%',
color: '#fff'
},
itemStyle: {
opacity: 0.5,
borderColor: '#fff',
borderWidth: 2
},
emphasis: {
label: {
position: 'inside',
formatter: '{b}Actual: {c}%'
}
},
data: [
{ value: 30, name: 'Visit' },
{ value: 10, name: 'Inquiry' },
{ value: 5, name: 'Order' },
{ value: 50, name: 'Click' },
{ value: 80, name: 'Show' }
],
// Ensure outer shape will not be over inner shape when hover.
z: 100
}
]
}
onMounted(() => {
let Echarts = echarts.init(document.getElementById('CustomizedFunnel'))
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
})
</script>

View File

@ -1,81 +0,0 @@
<template>
<div id="FunnelChart"></div>
</template>
<script setup name="FunnelChart">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
const option = {
title: {
text: ''
},
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b} : {c}%'
},
toolbox: {
feature: {
dataView: { readOnly: false },
restore: {},
saveAsImage: {}
}
},
legend: {
data: ['Show', 'Click', 'Visit', 'Inquiry', 'Order']
},
series: [
{
name: 'Funnel',
type: 'funnel',
left: '10%',
top: 60,
bottom: 60,
width: '80%',
min: 0,
max: 100,
minSize: '0%',
maxSize: '100%',
sort: 'descending',
gap: 2,
label: {
show: true,
position: 'inside'
},
labelLine: {
length: 10,
lineStyle: {
width: 1,
type: 'solid'
}
},
itemStyle: {
borderColor: '#fff',
borderWidth: 1
},
emphasis: {
label: {
fontSize: 20
}
},
data: [
{ value: 60, name: 'Visit' },
{ value: 40, name: 'Inquiry' },
{ value: 20, name: 'Order' },
{ value: 80, name: 'Click' },
{ value: 100, name: 'Show' }
]
}
]
}
onMounted(() => {
let Echarts = echarts.init(document.getElementById('FunnelChart'))
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
})
</script>

View File

@ -1,114 +0,0 @@
<template>
<div id="FunnelCompare"></div>
</template>
<script setup name="FunnelCompare">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
const option = {
title: {
text: '',
subtext: '',
left: 'left',
top: 'bottom'
},
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b} : {c}%'
},
toolbox: {
show: true,
orient: 'vertical',
top: 'center',
feature: {
dataView: { readOnly: false },
restore: {},
saveAsImage: {}
}
},
legend: {
orient: 'vertical',
left: 'left',
data: ['Prod A', 'Prod B', 'Prod C', 'Prod D', 'Prod E']
},
series: [
{
name: 'Funnel',
type: 'funnel',
width: '40%',
height: '45%',
left: '5%',
top: '50%',
funnelAlign: 'right',
data: [
{ value: 60, name: 'Prod C' },
{ value: 30, name: 'Prod D' },
{ value: 10, name: 'Prod E' },
{ value: 80, name: 'Prod B' },
{ value: 100, name: 'Prod A' }
]
},
{
name: 'Pyramid',
type: 'funnel',
width: '40%',
height: '45%',
left: '5%',
top: '5%',
sort: 'ascending',
funnelAlign: 'right',
data: [
{ value: 60, name: 'Prod C' },
{ value: 30, name: 'Prod D' },
{ value: 10, name: 'Prod E' },
{ value: 80, name: 'Prod B' },
{ value: 100, name: 'Prod A' }
]
},
{
name: 'Funnel',
type: 'funnel',
width: '40%',
height: '45%',
left: '55%',
top: '5%',
funnelAlign: 'left',
data: [
{ value: 60, name: 'Prod C' },
{ value: 30, name: 'Prod D' },
{ value: 10, name: 'Prod E' },
{ value: 80, name: 'Prod B' },
{ value: 100, name: 'Prod A' }
]
},
{
name: 'Pyramid',
type: 'funnel',
width: '40%',
height: '45%',
left: '55%',
top: '50%',
sort: 'ascending',
funnelAlign: 'left',
data: [
{ value: 60, name: 'Prod C' },
{ value: 30, name: 'Prod D' },
{ value: 10, name: 'Prod E' },
{ value: 80, name: 'Prod B' },
{ value: 100, name: 'Prod A' }
]
}
]
}
onMounted(() => {
let Echarts = echarts.init(document.getElementById('FunnelCompare'))
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
})
</script>

View File

@ -1,114 +0,0 @@
<template>
<div id="MultipleFunnels"></div>
</template>
<script setup name="MultipleFunnels">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
const option = {
title: {
text: '',
left: 'left',
top: 'bottom'
},
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b} : {c}%'
},
toolbox: {
orient: 'vertical',
top: 'center',
feature: {
dataView: { readOnly: false },
restore: {},
saveAsImage: {}
}
},
legend: {
orient: 'vertical',
left: 'left',
data: ['Show', 'Click', 'Visit', 'Inquiry', 'Order']
},
series: [
{
name: 'Funnel',
type: 'funnel',
width: '40%',
height: '45%',
left: '5%',
top: '50%',
data: [
{ value: 60, name: 'Visit' },
{ value: 30, name: 'Inquiry' },
{ value: 10, name: 'Order' },
{ value: 80, name: 'Click' },
{ value: 100, name: 'Show' }
]
},
{
name: 'Pyramid',
type: 'funnel',
width: '40%',
height: '45%',
left: '5%',
top: '5%',
sort: 'ascending',
data: [
{ value: 60, name: 'Visit' },
{ value: 30, name: 'Inquiry' },
{ value: 10, name: 'Order' },
{ value: 80, name: 'Click' },
{ value: 100, name: 'Show' }
]
},
{
name: 'Funnel',
type: 'funnel',
width: '40%',
height: '45%',
left: '55%',
top: '5%',
label: {
position: 'left'
},
data: [
{ value: 60, name: 'Visit' },
{ value: 30, name: 'Inquiry' },
{ value: 10, name: 'Order' },
{ value: 80, name: 'Click' },
{ value: 100, name: 'Show' }
]
},
{
name: 'Pyramid',
type: 'funnel',
width: '40%',
height: '45%',
left: '55%',
top: '50%',
sort: 'ascending',
label: {
position: 'left'
},
data: [
{ value: 60, name: 'Visit' },
{ value: 30, name: 'Inquiry' },
{ value: 10, name: 'Order' },
{ value: 80, name: 'Click' },
{ value: 100, name: 'Show' }
]
}
]
}
onMounted(() => {
let Echarts = echarts.init(document.getElementById('MultipleFunnels'))
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
})
</script>

View File

@ -1,51 +0,0 @@
<template>
<div id="BasicScatterChart"></div>
</template>
<script setup name="BasicScatterChart">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
onMounted(() => {
let Echarts = echarts.init(document.getElementById('BasicScatterChart'))
const option = {
xAxis: {},
yAxis: {},
series: [
{
symbolSize: 20,
data: [
[10.0, 8.04],
[8.07, 6.95],
[13.0, 7.58],
[9.05, 8.81],
[11.0, 8.33],
[14.0, 7.66],
[13.4, 6.81],
[10.0, 6.33],
[14.0, 8.96],
[12.5, 6.82],
[9.15, 7.2],
[11.5, 7.2],
[3.03, 4.23],
[12.2, 7.83],
[2.02, 4.47],
[1.05, 3.33],
[4.05, 4.96],
[6.03, 7.24],
[12.0, 6.26],
[12.0, 8.84],
[7.08, 5.82],
[5.02, 5.68]
],
type: 'scatter'
}
]
}
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
})
</script>

View File

@ -1,139 +0,0 @@
<template>
<div id="ClusteringProcess"></div>
</template>
<script setup name="ClusteringProcess">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
import ecStat from 'echarts-stat'
onMounted(() => {
let Echarts = echarts.init(document.getElementById('ClusteringProcess'))
echarts.registerTransform(ecStat.transform.clustering)
const data = [
[3.275154, 2.957587],
[-3.344465, 2.603513],
[0.355083, -3.376585],
[1.852435, 3.547351],
[-2.078973, 2.552013],
[-0.993756, -0.884433],
[2.682252, 4.007573],
[-3.087776, 2.878713],
[-1.565978, -1.256985],
[2.441611, 0.444826],
[-0.659487, 3.111284],
[-0.459601, -2.618005],
[2.17768, 2.387793],
[-2.920969, 2.917485],
[-0.028814, -4.168078],
[3.625746, 2.119041],
[-3.912363, 1.325108],
[-0.551694, -2.814223],
[2.855808, 3.483301],
[-3.594448, 2.856651],
[0.421993, -2.372646],
[1.650821, 3.407572],
[-2.082902, 3.384412],
[-0.718809, -2.492514],
[4.513623, 3.841029],
[-4.822011, 4.607049],
[-0.656297, -1.449872],
[1.919901, 4.439368],
[-3.287749, 3.918836],
[-1.576936, -2.977622],
[3.598143, 1.97597],
[-3.977329, 4.900932],
[-1.79108, -2.184517],
[3.914654, 3.559303],
[-1.910108, 4.166946],
[-1.226597, -3.317889],
[1.148946, 3.345138],
[-2.113864, 3.548172],
[0.845762, -3.589788],
[2.629062, 3.535831],
[-1.640717, 2.990517],
[-1.881012, -2.485405],
[4.606999, 3.510312],
[-4.366462, 4.023316],
[0.765015, -3.00127],
[3.121904, 2.173988],
[-4.025139, 4.65231],
[-0.559558, -3.840539],
[4.376754, 4.863579],
[-1.874308, 4.032237],
[-0.089337, -3.026809],
[3.997787, 2.518662],
[-3.082978, 2.884822],
[0.845235, -3.454465],
[1.327224, 3.358778],
[-2.889949, 3.596178],
[-0.966018, -2.839827],
[2.960769, 3.079555],
[-3.275518, 1.577068],
[0.639276, -3.41284]
]
let CLUSTER_COUNT = 6
let DIENSIION_CLUSTER_INDEX = 2
let COLOR_ALL = ['#37A2DA', '#e06343', '#37a354', '#b55dba', '#b5bd48', '#8378EA', '#96BFFF']
let pieces = []
for (var i = 0; i < CLUSTER_COUNT; i++) {
pieces.push({
value: i,
label: 'cluster ' + i,
color: COLOR_ALL[i]
})
}
const option = {
dataset: [
{
source: data
},
{
transform: {
type: 'ecStat:clustering',
// print: true,
config: {
clusterCount: CLUSTER_COUNT,
outputType: 'single',
outputClusterIndexDimension: DIENSIION_CLUSTER_INDEX
}
}
}
],
tooltip: {
position: 'top'
},
visualMap: {
type: 'piecewise',
top: 'middle',
min: 0,
max: CLUSTER_COUNT,
left: 10,
splitNumber: CLUSTER_COUNT,
dimension: DIENSIION_CLUSTER_INDEX,
pieces: pieces
},
grid: {
left: 120
},
xAxis: {},
yAxis: {},
series: {
type: 'scatter',
encode: { tooltip: [0, 1] },
symbolSize: 15,
itemStyle: {
borderColor: '#555'
},
datasetIndex: 1
}
}
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
})
</script>

View File

@ -1,92 +0,0 @@
<template>
<div id="EffectScatterChart"></div>
</template>
<script setup name="EffectScatterChart">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
onMounted(() => {
let Echarts = echarts.init(document.getElementById('EffectScatterChart'))
const option = {
xAxis: {
scale: true
},
yAxis: {
scale: true
},
series: [
{
type: 'effectScatter',
symbolSize: 20,
data: [
[172.7, 105.2],
[153.4, 42]
]
},
{
type: 'scatter',
// prettier-ignore
data: [[161.2, 51.6], [167.5, 59.0], [159.5, 49.2], [157.0, 63.0], [155.8, 53.6],
[170.0, 59.0], [159.1, 47.6], [166.0, 69.8], [176.2, 66.8], [160.2, 75.2],
[172.5, 55.2], [170.9, 54.2], [172.9, 62.5], [153.4, 42.0], [160.0, 50.0],
[147.2, 49.8], [168.2, 49.2], [175.0, 73.2], [157.0, 47.8], [167.6, 68.8],
[159.5, 50.6], [175.0, 82.5], [166.8, 57.2], [176.5, 87.8], [170.2, 72.8],
[174.0, 54.5], [173.0, 59.8], [179.9, 67.3], [170.5, 67.8], [160.0, 47.0],
[154.4, 46.2], [162.0, 55.0], [176.5, 83.0], [160.0, 54.4], [152.0, 45.8],
[162.1, 53.6], [170.0, 73.2], [160.2, 52.1], [161.3, 67.9], [166.4, 56.6],
[168.9, 62.3], [163.8, 58.5], [167.6, 54.5], [160.0, 50.2], [161.3, 60.3],
[167.6, 58.3], [165.1, 56.2], [160.0, 50.2], [170.0, 72.9], [157.5, 59.8],
[167.6, 61.0], [160.7, 69.1], [163.2, 55.9], [152.4, 46.5], [157.5, 54.3],
[168.3, 54.8], [180.3, 60.7], [165.5, 60.0], [165.0, 62.0], [164.5, 60.3],
[156.0, 52.7], [160.0, 74.3], [163.0, 62.0], [165.7, 73.1], [161.0, 80.0],
[162.0, 54.7], [166.0, 53.2], [174.0, 75.7], [172.7, 61.1], [167.6, 55.7],
[151.1, 48.7], [164.5, 52.3], [163.5, 50.0], [152.0, 59.3], [169.0, 62.5],
[164.0, 55.7], [161.2, 54.8], [155.0, 45.9], [170.0, 70.6], [176.2, 67.2],
[170.0, 69.4], [162.5, 58.2], [170.3, 64.8], [164.1, 71.6], [169.5, 52.8],
[163.2, 59.8], [154.5, 49.0], [159.8, 50.0], [173.2, 69.2], [170.0, 55.9],
[161.4, 63.4], [169.0, 58.2], [166.2, 58.6], [159.4, 45.7], [162.5, 52.2],
[159.0, 48.6], [162.8, 57.8], [159.0, 55.6], [179.8, 66.8], [162.9, 59.4],
[161.0, 53.6], [151.1, 73.2], [168.2, 53.4], [168.9, 69.0], [173.2, 58.4],
[171.8, 56.2], [178.0, 70.6], [164.3, 59.8], [163.0, 72.0], [168.5, 65.2],
[166.8, 56.6], [172.7, 105.2], [163.5, 51.8], [169.4, 63.4], [167.8, 59.0],
[159.5, 47.6], [167.6, 63.0], [161.2, 55.2], [160.0, 45.0], [163.2, 54.0],
[162.2, 50.2], [161.3, 60.2], [149.5, 44.8], [157.5, 58.8], [163.2, 56.4],
[172.7, 62.0], [155.0, 49.2], [156.5, 67.2], [164.0, 53.8], [160.9, 54.4],
[162.8, 58.0], [167.0, 59.8], [160.0, 54.8], [160.0, 43.2], [168.9, 60.5],
[158.2, 46.4], [156.0, 64.4], [160.0, 48.8], [167.1, 62.2], [158.0, 55.5],
[167.6, 57.8], [156.0, 54.6], [162.1, 59.2], [173.4, 52.7], [159.8, 53.2],
[170.5, 64.5], [159.2, 51.8], [157.5, 56.0], [161.3, 63.6], [162.6, 63.2],
[160.0, 59.5], [168.9, 56.8], [165.1, 64.1], [162.6, 50.0], [165.1, 72.3],
[166.4, 55.0], [160.0, 55.9], [152.4, 60.4], [170.2, 69.1], [162.6, 84.5],
[170.2, 55.9], [158.8, 55.5], [172.7, 69.5], [167.6, 76.4], [162.6, 61.4],
[167.6, 65.9], [156.2, 58.6], [175.2, 66.8], [172.1, 56.6], [162.6, 58.6],
[160.0, 55.9], [165.1, 59.1], [182.9, 81.8], [166.4, 70.7], [165.1, 56.8],
[177.8, 60.0], [165.1, 58.2], [175.3, 72.7], [154.9, 54.1], [158.8, 49.1],
[172.7, 75.9], [168.9, 55.0], [161.3, 57.3], [167.6, 55.0], [165.1, 65.5],
[175.3, 65.5], [157.5, 48.6], [163.8, 58.6], [167.6, 63.6], [165.1, 55.2],
[165.1, 62.7], [168.9, 56.6], [162.6, 53.9], [164.5, 63.2], [176.5, 73.6],
[168.9, 62.0], [175.3, 63.6], [159.4, 53.2], [160.0, 53.4], [170.2, 55.0],
[162.6, 70.5], [167.6, 54.5], [162.6, 54.5], [160.7, 55.9], [160.0, 59.0],
[157.5, 63.6], [162.6, 54.5], [152.4, 47.3], [170.2, 67.7], [165.1, 80.9],
[172.7, 70.5], [165.1, 60.9], [170.2, 63.6], [170.2, 54.5], [170.2, 59.1],
[161.3, 70.5], [167.6, 52.7], [167.6, 62.7], [165.1, 86.3], [162.6, 66.4],
[152.4, 67.3], [168.9, 63.0], [170.2, 73.6], [175.2, 62.3], [175.2, 57.7],
[160.0, 55.4], [165.1, 104.1], [174.0, 55.5], [170.2, 77.3], [160.0, 80.5],
[167.6, 64.5], [167.6, 72.3], [167.6, 61.4], [154.9, 58.2], [162.6, 81.8],
[175.3, 63.6], [171.4, 53.4], [157.5, 54.5], [165.1, 53.6], [160.0, 60.0],
[174.0, 73.6], [162.6, 61.4], [174.0, 55.5], [162.6, 63.6], [161.3, 60.9],
[156.2, 60.0], [149.9, 46.8], [169.5, 57.3], [160.0, 64.1], [175.3, 63.6],
[169.5, 67.3], [160.0, 75.5], [172.7, 68.2], [162.6, 61.4], [157.5, 76.8],
[176.5, 71.8], [164.4, 55.5], [160.7, 48.6], [174.0, 66.4], [163.8, 67.3]
]
}
]
}
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
})
</script>

View File

@ -1,264 +0,0 @@
<template>
<div id="ScatterAqiColor"></div>
</template>
<script setup name="ScatterAqiColor">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
const dataBJ = [
[1, 55, 9, 56, 0.46, 18, 6, '良'],
[2, 25, 11, 21, 0.65, 34, 9, '优'],
[3, 56, 7, 63, 0.3, 14, 5, '良'],
[4, 33, 7, 29, 0.33, 16, 6, '优'],
[5, 42, 24, 44, 0.76, 40, 16, '优'],
[6, 82, 58, 90, 1.77, 68, 33, '良'],
[7, 74, 49, 77, 1.46, 48, 27, '良'],
[8, 78, 55, 80, 1.29, 59, 29, '良'],
[9, 267, 216, 280, 4.8, 108, 64, '重度污染'],
[10, 185, 127, 216, 2.52, 61, 27, '中度污染'],
[11, 39, 19, 38, 0.57, 31, 15, '优'],
[12, 41, 11, 40, 0.43, 21, 7, '优'],
[13, 64, 38, 74, 1.04, 46, 22, '良'],
[14, 108, 79, 120, 1.7, 75, 41, '轻度污染'],
[15, 108, 63, 116, 1.48, 44, 26, '轻度污染'],
[16, 33, 6, 29, 0.34, 13, 5, '优'],
[17, 94, 66, 110, 1.54, 62, 31, '良'],
[18, 186, 142, 192, 3.88, 93, 79, '中度污染'],
[19, 57, 31, 54, 0.96, 32, 14, '良'],
[20, 22, 8, 17, 0.48, 23, 10, '优'],
[21, 39, 15, 36, 0.61, 29, 13, '优'],
[22, 94, 69, 114, 2.08, 73, 39, '良'],
[23, 99, 73, 110, 2.43, 76, 48, '良'],
[24, 31, 12, 30, 0.5, 32, 16, '优'],
[25, 42, 27, 43, 1, 53, 22, '优'],
[26, 154, 117, 157, 3.05, 92, 58, '中度污染'],
[27, 234, 185, 230, 4.09, 123, 69, '重度污染'],
[28, 160, 120, 186, 2.77, 91, 50, '中度污染'],
[29, 134, 96, 165, 2.76, 83, 41, '轻度污染'],
[30, 52, 24, 60, 1.03, 50, 21, '良'],
[31, 46, 5, 49, 0.28, 10, 6, '优']
]
const dataGZ = [
[1, 26, 37, 27, 1.163, 27, 13, '优'],
[2, 85, 62, 71, 1.195, 60, 8, '良'],
[3, 78, 38, 74, 1.363, 37, 7, '良'],
[4, 21, 21, 36, 0.634, 40, 9, '优'],
[5, 41, 42, 46, 0.915, 81, 13, '优'],
[6, 56, 52, 69, 1.067, 92, 16, '良'],
[7, 64, 30, 28, 0.924, 51, 2, '良'],
[8, 55, 48, 74, 1.236, 75, 26, '良'],
[9, 76, 85, 113, 1.237, 114, 27, '良'],
[10, 91, 81, 104, 1.041, 56, 40, '良'],
[11, 84, 39, 60, 0.964, 25, 11, '良'],
[12, 64, 51, 101, 0.862, 58, 23, '良'],
[13, 70, 69, 120, 1.198, 65, 36, '良'],
[14, 77, 105, 178, 2.549, 64, 16, '良'],
[15, 109, 68, 87, 0.996, 74, 29, '轻度污染'],
[16, 73, 68, 97, 0.905, 51, 34, '良'],
[17, 54, 27, 47, 0.592, 53, 12, '良'],
[18, 51, 61, 97, 0.811, 65, 19, '良'],
[19, 91, 71, 121, 1.374, 43, 18, '良'],
[20, 73, 102, 182, 2.787, 44, 19, '良'],
[21, 73, 50, 76, 0.717, 31, 20, '良'],
[22, 84, 94, 140, 2.238, 68, 18, '良'],
[23, 93, 77, 104, 1.165, 53, 7, '良'],
[24, 99, 130, 227, 3.97, 55, 15, '良'],
[25, 146, 84, 139, 1.094, 40, 17, '轻度污染'],
[26, 113, 108, 137, 1.481, 48, 15, '轻度污染'],
[27, 81, 48, 62, 1.619, 26, 3, '良'],
[28, 56, 48, 68, 1.336, 37, 9, '良'],
[29, 82, 92, 174, 3.29, 0, 13, '良'],
[30, 106, 116, 188, 3.628, 101, 16, '轻度污染'],
[31, 118, 50, 0, 1.383, 76, 11, '轻度污染']
]
const dataSH = [
[1, 91, 45, 125, 0.82, 34, 23, '良'],
[2, 65, 27, 78, 0.86, 45, 29, '良'],
[3, 83, 60, 84, 1.09, 73, 27, '良'],
[4, 109, 81, 121, 1.28, 68, 51, '轻度污染'],
[5, 106, 77, 114, 1.07, 55, 51, '轻度污染'],
[6, 109, 81, 121, 1.28, 68, 51, '轻度污染'],
[7, 106, 77, 114, 1.07, 55, 51, '轻度污染'],
[8, 89, 65, 78, 0.86, 51, 26, '良'],
[9, 53, 33, 47, 0.64, 50, 17, '良'],
[10, 80, 55, 80, 1.01, 75, 24, '良'],
[11, 117, 81, 124, 1.03, 45, 24, '轻度污染'],
[12, 99, 71, 142, 1.1, 62, 42, '良'],
[13, 95, 69, 130, 1.28, 74, 50, '良'],
[14, 116, 87, 131, 1.47, 84, 40, '轻度污染'],
[15, 108, 80, 121, 1.3, 85, 37, '轻度污染'],
[16, 134, 83, 167, 1.16, 57, 43, '轻度污染'],
[17, 79, 43, 107, 1.05, 59, 37, '良'],
[18, 71, 46, 89, 0.86, 64, 25, '良'],
[19, 97, 71, 113, 1.17, 88, 31, '良'],
[20, 84, 57, 91, 0.85, 55, 31, '良'],
[21, 87, 63, 101, 0.9, 56, 41, '良'],
[22, 104, 77, 119, 1.09, 73, 48, '轻度污染'],
[23, 87, 62, 100, 1, 72, 28, '良'],
[24, 168, 128, 172, 1.49, 97, 56, '中度污染'],
[25, 65, 45, 51, 0.74, 39, 17, '良'],
[26, 39, 24, 38, 0.61, 47, 17, '优'],
[27, 39, 24, 39, 0.59, 50, 19, '优'],
[28, 93, 68, 96, 1.05, 79, 29, '良'],
[29, 188, 143, 197, 1.66, 99, 51, '中度污染'],
[30, 174, 131, 174, 1.55, 108, 50, '中度污染'],
[31, 187, 143, 201, 1.39, 89, 53, '中度污染']
]
const schema = [
{ name: 'date', index: 0, text: '日' },
{ name: 'AQIindex', index: 1, text: 'AQI指数' },
{ name: 'PM25', index: 2, text: 'PM2.5' },
{ name: 'PM10', index: 3, text: 'PM10' },
{ name: 'CO', index: 4, text: '一氧化碳CO' },
{ name: 'NO2', index: 5, text: '二氧化氮NO2' },
{ name: 'SO2', index: 6, text: '二氧化硫SO2' }
]
const itemStyle = {
opacity: 0.8,
shadowBlur: 10,
shadowOffsetX: 0,
shadowOffsetY: 0,
shadowColor: 'rgba(0,0,0,0.3)'
}
onMounted(() => {
let Echarts = echarts.init(document.getElementById('ScatterAqiColor'))
const option = {
color: ['#dd4444', '#fec42c', '#80F1BE'],
legend: {
top: 10,
data: ['北京', '上海', '广州'],
textStyle: {
fontSize: 16
}
},
grid: {
left: '10%',
right: 150,
top: '18%',
bottom: '10%'
},
tooltip: {
backgroundColor: 'rgba(255,255,255,0.7)',
formatter: function (param) {
var value = param.value
// prettier-ignore
return '<div style="border-bottom: 1px solid rgba(255,255,255,.3); font-size: 18px;padding-bottom: 7px;margin-bottom: 7px">'
+ param.seriesName + ' ' + value[0] + '日:'
+ value[7]
+ '</div>'
+ schema[1].text + '' + value[1] + '<br>'
+ schema[2].text + '' + value[2] + '<br>'
+ schema[3].text + '' + value[3] + '<br>'
+ schema[4].text + '' + value[4] + '<br>'
+ schema[5].text + '' + value[5] + '<br>'
+ schema[6].text + '' + value[6] + '<br>';
}
},
xAxis: {
type: 'value',
name: '日期',
nameGap: 16,
nameTextStyle: {
fontSize: 16
},
max: 31,
splitLine: {
show: false
}
},
yAxis: {
type: 'value',
name: 'AQI指数',
nameLocation: 'end',
nameGap: 20,
nameTextStyle: {
fontSize: 16
},
splitLine: {
show: false
}
},
visualMap: [
{
left: 'right',
top: '10%',
dimension: 2,
min: 0,
max: 250,
itemWidth: 30,
itemHeight: 120,
calculable: true,
precision: 0.1,
text: ['圆形大小PM2.5'],
textGap: 30,
inRange: {
symbolSize: [10, 70]
},
outOfRange: {
symbolSize: [10, 70],
color: ['rgba(255,255,255,0.4)']
},
controller: {
inRange: {
color: ['#c23531']
},
outOfRange: {
color: ['#999']
}
}
},
{
left: 'right',
bottom: '5%',
dimension: 6,
min: 0,
max: 50,
itemHeight: 120,
text: ['明暗:二氧化硫'],
textGap: 30,
inRange: {
colorLightness: [0.9, 0.5]
},
outOfRange: {
color: ['rgba(255,255,255,0.4)']
},
controller: {
inRange: {
color: ['#c23531']
},
outOfRange: {
color: ['#999']
}
}
}
],
series: [
{
name: '北京',
type: 'scatter',
itemStyle: itemStyle,
data: dataBJ
},
{
name: '上海',
type: 'scatter',
itemStyle: itemStyle,
data: dataSH
},
{
name: '广州',
type: 'scatter',
itemStyle: itemStyle,
data: dataGZ
}
]
}
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
})
</script>

View File

@ -1,182 +0,0 @@
<template>
<div id="TreeWithPolylineEdge"></div>
</template>
<script setup name="TreeWithPolylineEdge">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
const data = {
name: 'flare',
children: [
{
name: 'data',
children: [
{
name: 'converters',
children: [
{ name: 'Converters', value: 721 },
{ name: 'DelimitedTextConverter', value: 4294 }
]
},
{
name: 'DataUtil',
value: 3322
}
]
},
{
name: 'display',
children: [
{ name: 'DirtySprite', value: 8833 },
{ name: 'LineSprite', value: 1732 },
{ name: 'RectSprite', value: 3623 }
]
},
{
name: 'flex',
children: [{ name: 'FlareVis', value: 4116 }]
},
{
name: 'query',
children: [
{ name: 'AggregateExpression', value: 1616 },
{ name: 'And', value: 1027 },
{ name: 'Arithmetic', value: 3891 },
{ name: 'Average', value: 891 },
{ name: 'BinaryExpression', value: 2893 },
{ name: 'Comparison', value: 5103 },
{ name: 'CompositeExpression', value: 3677 },
{ name: 'Count', value: 781 },
{ name: 'DateUtil', value: 4141 },
{ name: 'Distinct', value: 933 },
{ name: 'Expression', value: 5130 },
{ name: 'ExpressionIterator', value: 3617 },
{ name: 'Fn', value: 3240 },
{ name: 'If', value: 2732 },
{ name: 'IsA', value: 2039 },
{ name: 'Literal', value: 1214 },
{ name: 'Match', value: 3748 },
{ name: 'Maximum', value: 843 },
{
name: 'methods',
children: [
{ name: 'add', value: 593 },
{ name: 'and', value: 330 },
{ name: 'average', value: 287 },
{ name: 'count', value: 277 },
{ name: 'distinct', value: 292 },
{ name: 'div', value: 595 },
{ name: 'eq', value: 594 },
{ name: 'fn', value: 460 },
{ name: 'gt', value: 603 },
{ name: 'gte', value: 625 },
{ name: 'iff', value: 748 },
{ name: 'isa', value: 461 },
{ name: 'lt', value: 597 },
{ name: 'lte', value: 619 },
{ name: 'max', value: 283 },
{ name: 'min', value: 283 },
{ name: 'mod', value: 591 },
{ name: 'mul', value: 603 },
{ name: 'neq', value: 599 },
{ name: 'not', value: 386 },
{ name: 'or', value: 323 },
{ name: 'orderby', value: 307 },
{ name: 'range', value: 772 },
{ name: 'select', value: 296 },
{ name: 'stddev', value: 363 },
{ name: 'sub', value: 600 },
{ name: 'sum', value: 280 },
{ name: 'update', value: 307 },
{ name: 'variance', value: 335 },
{ name: 'where', value: 299 },
{ name: 'xor', value: 354 },
{ name: 'x_x', value: 264 }
]
},
{ name: 'Minimum', value: 843 },
{ name: 'Not', value: 1554 },
{ name: 'Or', value: 970 },
{ name: 'Query', value: 13896 },
{ name: 'Range', value: 1594 },
{ name: 'StringUtil', value: 4130 },
{ name: 'Sum', value: 791 },
{ name: 'Variable', value: 1124 },
{ name: 'Variance', value: 1876 },
{ name: 'Xor', value: 1101 }
]
},
{
name: 'scale',
children: [
{ name: 'IScaleMap', value: 2105 },
{ name: 'LinearScale', value: 1316 },
{ name: 'LogScale', value: 3151 },
{ name: 'OrdinalScale', value: 3770 },
{ name: 'QuantileScale', value: 2435 },
{ name: 'QuantitativeScale', value: 4839 },
{ name: 'RootScale', value: 1756 },
{ name: 'Scale', value: 4268 },
{ name: 'ScaleType', value: 1821 },
{ name: 'TimeScale', value: 5833 }
]
}
]
}
const option = {
tooltip: {
trigger: 'item',
triggerOn: 'mousemove'
},
series: [
{
type: 'tree',
id: 0,
name: 'tree1',
data: [data],
top: '10%',
left: '8%',
bottom: '22%',
right: '20%',
symbolSize: 7,
edgeShape: 'polyline',
edgeForkPosition: '63%',
initialTreeDepth: 3,
lineStyle: {
width: 2
},
label: {
backgroundColor: '#fff',
position: 'left',
verticalAlign: 'middle',
align: 'right'
},
leaves: {
label: {
position: 'right',
verticalAlign: 'middle',
align: 'left'
}
},
emphasis: {
focus: 'descendant'
},
expandAndCollapse: true,
animationDuration: 550,
animationDurationUpdate: 750
}
]
}
onMounted(() => {
let Echarts = echarts.init(document.getElementById('TreeWithPolylineEdge'))
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
})
</script>

View File

@ -1,34 +0,0 @@
<template>
<div id="BasicLineChart"></div>
</template>
<script setup name="BasicLineChart">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
const option = {
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
yAxis: {
type: 'value'
},
series: [
{
data: [150, 230, 224, 218, 135, 147, 260],
type: 'line'
}
]
}
onMounted(() => {
let Echarts = echarts.init(document.getElementById('BasicLineChart'))
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
})
</script>

View File

@ -1,115 +0,0 @@
<template>
<div id="StackedAreaChart"></div>
</template>
<script setup name="StackedAreaChart">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
const option = {
title: {
text: ''
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
label: {
backgroundColor: '#6a7985'
}
}
},
legend: {
data: ['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine']
},
toolbox: {
feature: {
saveAsImage: {}
}
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: [
{
type: 'category',
boundaryGap: false,
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
}
],
yAxis: [
{
type: 'value'
}
],
series: [
{
name: 'Email',
type: 'line',
stack: 'Total',
areaStyle: {},
emphasis: {
focus: 'series'
},
data: [120, 132, 101, 134, 90, 230, 210]
},
{
name: 'Union Ads',
type: 'line',
stack: 'Total',
areaStyle: {},
emphasis: {
focus: 'series'
},
data: [220, 182, 191, 234, 290, 330, 310]
},
{
name: 'Video Ads',
type: 'line',
stack: 'Total',
areaStyle: {},
emphasis: {
focus: 'series'
},
data: [150, 232, 201, 154, 190, 330, 410]
},
{
name: 'Direct',
type: 'line',
stack: 'Total',
areaStyle: {},
emphasis: {
focus: 'series'
},
data: [320, 332, 301, 334, 390, 330, 320]
},
{
name: 'Search Engine',
type: 'line',
stack: 'Total',
label: {
show: true,
position: 'top'
},
areaStyle: {},
emphasis: {
focus: 'series'
},
data: [820, 932, 901, 934, 1290, 1330, 1320]
}
]
}
onMounted(() => {
let Echarts = echarts.init(document.getElementById('StackedAreaChart'))
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
})
</script>

View File

@ -1,81 +0,0 @@
<template>
<div id="StackedLineChart"></div>
</template>
<script setup name="StackedLineChart">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
const option = {
title: {
text: ''
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
toolbox: {
feature: {
saveAsImage: {}
}
},
xAxis: {
type: 'category',
boundaryGap: false,
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
yAxis: {
type: 'value'
},
series: [
{
name: 'Email',
type: 'line',
stack: 'Total',
data: [120, 132, 101, 134, 90, 230, 210]
},
{
name: 'Union Ads',
type: 'line',
stack: 'Total',
data: [220, 182, 191, 234, 290, 330, 310]
},
{
name: 'Video Ads',
type: 'line',
stack: 'Total',
data: [150, 232, 201, 154, 190, 330, 410]
},
{
name: 'Direct',
type: 'line',
stack: 'Total',
data: [320, 332, 301, 334, 390, 330, 320]
},
{
name: 'Search Engine',
type: 'line',
stack: 'Total',
data: [820, 932, 901, 934, 1290, 1330, 1320]
}
]
}
onMounted(() => {
let Echarts = echarts.init(document.getElementById('StackedLineChart'))
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
})
</script>

View File

@ -1,68 +0,0 @@
<template>
<div id="StepLine"></div>
</template>
<script setup name="StepLine">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
const option = {
title: {
text: ''
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['Step Start', 'Step Middle', 'Step End']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
toolbox: {
feature: {
saveAsImage: {}
}
},
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
yAxis: {
type: 'value'
},
series: [
{
name: 'Step Start',
type: 'line',
step: 'start',
data: [120, 132, 101, 134, 90, 230, 210]
},
{
name: 'Step Middle',
type: 'line',
step: 'middle',
data: [220, 282, 201, 234, 290, 430, 410]
},
{
name: 'Step End',
type: 'line',
step: 'end',
data: [450, 432, 401, 454, 590, 530, 510]
}
]
}
onMounted(() => {
let Echarts = echarts.init(document.getElementById('StepLine'))
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
})
</script>

View File

@ -1,37 +0,0 @@
<template>
<div id="GaugeBasicChart"></div>
</template>
<script setup name="GaugeBasicChart">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
onMounted(() => {
let Echarts = echarts.init(document.getElementById('GaugeBasicChart'))
const option = {
tooltip: {
formatter: '{a} <br/>{b} : {c}%'
},
series: [
{
name: 'Pressure',
type: 'gauge',
detail: {
formatter: '{value}'
},
data: [
{
value: 50,
name: 'SCORE'
}
]
}
]
}
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
})
</script>

View File

@ -1,106 +0,0 @@
<template>
<div id="GrogressGauge"></div>
</template>
<script setup name="GrogressGauge">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
onMounted(() => {
let Echarts = echarts.init(document.getElementById('GrogressGauge'))
const option = {
series: [
{
type: 'gauge',
startAngle: 180,
endAngle: 0,
min: 0,
max: 240,
splitNumber: 12,
itemStyle: {
color: '#58D9F9',
shadowColor: 'rgba(0,138,255,0.45)',
shadowBlur: 10,
shadowOffsetX: 2,
shadowOffsetY: 2
},
progress: {
show: true,
roundCap: true,
width: 18
},
pointer: {
icon: 'path://M2090.36389,615.30999 L2090.36389,615.30999 C2091.48372,615.30999 2092.40383,616.194028 2092.44859,617.312956 L2096.90698,728.755929 C2097.05155,732.369577 2094.2393,735.416212 2090.62566,735.56078 C2090.53845,735.564269 2090.45117,735.566014 2090.36389,735.566014 L2090.36389,735.566014 C2086.74736,735.566014 2083.81557,732.63423 2083.81557,729.017692 C2083.81557,728.930412 2083.81732,728.84314 2083.82081,728.755929 L2088.2792,617.312956 C2088.32396,616.194028 2089.24407,615.30999 2090.36389,615.30999 Z',
length: '75%',
width: 16,
offsetCenter: [0, '5%']
},
axisLine: {
roundCap: true,
lineStyle: {
width: 18
}
},
axisTick: {
splitNumber: 2,
lineStyle: {
width: 2,
color: '#999'
}
},
splitLine: {
length: 12,
lineStyle: {
width: 3,
color: '#999'
}
},
axisLabel: {
distance: 20,
color: '#999',
fontSize: 10
},
title: {
show: false
},
detail: {
backgroundColor: '#fff',
borderColor: '#999',
borderWidth: 2,
width: '60%',
lineHeight: 40,
height: 40,
borderRadius: 8,
offsetCenter: [0, '35%'],
valueAnimation: true,
formatter: function (value) {
return '{value|' + value.toFixed(0) + '}{unit|km/h}'
},
rich: {
value: {
fontSize: 30,
fontWeight: 'bolder',
color: '#777'
},
unit: {
fontSize: 15,
color: '#999',
padding: [0, 0, -20, 10]
}
}
},
data: [
{
value: 100
}
]
}
]
}
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
})
</script>

View File

@ -1,83 +0,0 @@
<template>
<div id="StageSpeedGauge"></div>
</template>
<script setup name="StageSpeedGauge">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
onMounted(() => {
let Echarts = echarts.init(document.getElementById('StageSpeedGauge'))
const option = {
series: [
{
type: 'gauge',
axisLine: {
lineStyle: {
width: 30,
color: [
[0.3, '#67e0e3'],
[0.7, '#37a2da'],
[1, '#fd666d']
]
}
},
pointer: {
itemStyle: {
color: 'auto'
}
},
axisTick: {
distance: -30,
length: 8,
lineStyle: {
color: '#fff',
width: 2
}
},
splitLine: {
distance: -30,
length: 30,
lineStyle: {
color: '#fff',
width: 4
}
},
axisLabel: {
color: 'auto',
distance: 40,
fontSize: 20
},
detail: {
valueAnimation: true,
formatter: '{value} km/h',
color: 'auto'
},
data: [
{
value: 70
}
]
}
]
}
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
setInterval(() => {
Echarts.setOption({
series: [
{
data: [
{
value: Number((Math.random() * 100).toFixed(2))
}
]
}
]
})
}, 2000)
})
</script>

View File

@ -1,147 +0,0 @@
<template>
<div id="TemperatureGaugeChart"></div>
</template>
<script setup name="TemperatureGaugeChart">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
onMounted(() => {
let Echarts = echarts.init(document.getElementById('TemperatureGaugeChart'))
const option = {
series: [
{
type: 'gauge',
center: ['50%', '60%'],
startAngle: 200,
endAngle: -20,
min: 0,
max: 60,
splitNumber: 12,
itemStyle: {
color: '#FFAB91'
},
progress: {
show: true,
width: 30
},
pointer: {
show: false
},
axisLine: {
lineStyle: {
width: 30
}
},
axisTick: {
distance: -45,
splitNumber: 5,
lineStyle: {
width: 2,
color: '#999'
}
},
splitLine: {
distance: -52,
length: 14,
lineStyle: {
width: 3,
color: '#999'
}
},
axisLabel: {
distance: -20,
color: '#999',
fontSize: 20
},
anchor: {
show: false
},
title: {
show: false
},
detail: {
valueAnimation: true,
width: '60%',
lineHeight: 40,
borderRadius: 8,
offsetCenter: [0, '-15%'],
fontSize: 30,
fontWeight: 'bolder',
formatter: '{value} °C',
color: 'auto'
},
data: [
{
value: 20
}
]
},
{
type: 'gauge',
center: ['50%', '60%'],
startAngle: 200,
endAngle: -20,
min: 0,
max: 60,
itemStyle: {
color: '#FD7347'
},
progress: {
show: true,
width: 8
},
pointer: {
show: false
},
axisLine: {
show: false
},
axisTick: {
show: false
},
splitLine: {
show: false
},
axisLabel: {
show: false
},
detail: {
show: false
},
data: [
{
value: 20
}
]
}
]
}
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
setInterval(() => {
const random = Number((Math.random() * 60).toFixed(2))
Echarts.setOption({
series: [
{
data: [
{
value: random
}
]
},
{
data: [
{
value: random
}
]
}
]
})
}, 2000)
})
</script>

View File

@ -1,77 +0,0 @@
<template>
<div id="BarChartWithNegativeValue"></div>
</template>
<script setup name="BarChartWithNegativeValue">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
const labelRight = {
position: 'right'
}
const option = {
title: {
text: ''
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
grid: {
top: 80,
bottom: 30
},
xAxis: {
type: 'value',
position: 'top',
splitLine: {
lineStyle: {
type: 'dashed'
}
}
},
yAxis: {
type: 'category',
axisLine: { show: false },
axisLabel: { show: false },
axisTick: { show: false },
splitLine: { show: false },
data: ['ten', 'nine', 'eight', 'seven', 'six', 'five', 'four', 'three', 'two', 'one']
},
series: [
{
name: 'Cost',
type: 'bar',
stack: 'Total',
label: {
show: true,
formatter: '{b}'
},
data: [
{ value: -0.07, label: labelRight },
{ value: -0.09, label: labelRight },
0.2,
0.44,
{ value: -0.23, label: labelRight },
0.08,
{ value: -0.17, label: labelRight },
0.47,
{ value: -0.36, label: labelRight },
0.18
]
}
]
}
onMounted(() => {
let Echarts = echarts.init(document.getElementById('BarChartWithNegativeValue'))
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
})
</script>

View File

@ -1,132 +0,0 @@
<template>
<div id="BarLabelRotation"></div>
</template>
<script setup name="BarLabelRotation">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
let option = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
legend: {},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: [
{
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
}
],
yAxis: [
{
type: 'value'
}
],
series: [
{
name: 'Direct',
type: 'bar',
emphasis: {
focus: 'series'
},
data: [320, 332, 301, 334, 390, 330, 320]
},
{
name: 'Email',
type: 'bar',
stack: 'Ad',
emphasis: {
focus: 'series'
},
data: [120, 132, 101, 134, 90, 230, 210]
},
{
name: 'Union Ads',
type: 'bar',
stack: 'Ad',
emphasis: {
focus: 'series'
},
data: [220, 182, 191, 234, 290, 330, 310]
},
{
name: 'Video Ads',
type: 'bar',
stack: 'Ad',
emphasis: {
focus: 'series'
},
data: [150, 232, 201, 154, 190, 330, 410]
},
{
name: 'Search Engine',
type: 'bar',
data: [862, 1018, 964, 1026, 1679, 1600, 1570],
emphasis: {
focus: 'series'
},
markLine: {
lineStyle: {
type: 'dashed'
},
data: [[{ type: 'min' }, { type: 'max' }]]
}
},
{
name: 'Baidu',
type: 'bar',
barWidth: 5,
stack: 'Search Engine',
emphasis: {
focus: 'series'
},
data: [620, 732, 701, 734, 1090, 1130, 1120]
},
{
name: 'Google',
type: 'bar',
stack: 'Search Engine',
emphasis: {
focus: 'series'
},
data: [120, 132, 101, 134, 290, 230, 220]
},
{
name: 'Bing',
type: 'bar',
stack: 'Search Engine',
emphasis: {
focus: 'series'
},
data: [60, 72, 71, 74, 190, 130, 110]
},
{
name: 'Others',
type: 'bar',
stack: 'Search Engine',
emphasis: {
focus: 'series'
},
data: [62, 82, 91, 84, 109, 110, 120]
}
]
}
onMounted(() => {
let Echarts = echarts.init(document.getElementById('BarLabelRotation'))
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
})
</script>

View File

@ -1,32 +0,0 @@
<template>
<div id="BasicBar"></div>
</template>
<script setup name="BasicBar">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
onMounted(() => {
let Echarts = echarts.init(document.getElementById('BasicBar'))
const option = {
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
yAxis: {
type: 'value'
},
series: [
{
data: [120, 200, 150, 80, 70, 110, 130],
type: 'bar'
}
]
}
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
})
</script>

View File

@ -1,249 +0,0 @@
<template>
<div id="WatermarkEChartsDownload"></div>
</template>
<script setup name="WatermarkEChartsDownload">
import { onMounted } from 'vue'
import * as echarts from 'echarts'
const builderJson = {
all: 10887,
charts: {
map: 3237,
lines: 2164,
bar: 7561,
line: 7778,
pie: 7355,
scatter: 2405,
candlestick: 1842,
radar: 2090,
heatmap: 1762,
treemap: 1593,
graph: 2060,
boxplot: 1537,
parallel: 1908,
gauge: 2107,
funnel: 1692,
sankey: 1568
},
components: {
geo: 2788,
title: 9575,
legend: 9400,
tooltip: 9466,
grid: 9266,
markPoint: 3419,
markLine: 2984,
timeline: 2739,
dataZoom: 2744,
visualMap: 2466,
toolbox: 3034,
polar: 1945
},
ie: 9743
}
const downloadJson = {
'echarts.min.js': 17365,
'echarts.simple.min.js': 4079,
'echarts.common.min.js': 6929,
'echarts.js': 14890
}
const themeJson = {
'dark.js': 1594,
'infographic.js': 925,
'shine.js': 1608,
'roma.js': 721,
'macarons.js': 2179,
'vintage.js': 1982
}
const waterMarkText = 'ECHARTS'
const canvas = document.createElement('canvas')
const ctx = canvas.getContext('2d')
canvas.width = canvas.height = 100
ctx.textAlign = 'center'
ctx.textBaseline = 'middle'
ctx.globalAlpha = 0.08
ctx.font = '20px Microsoft Yahei'
ctx.translate(50, 50)
ctx.rotate(-Math.PI / 4)
ctx.fillText(waterMarkText, 0, 0)
const option = {
backgroundColor: {
type: 'pattern',
image: canvas,
repeat: 'repeat'
},
tooltip: {},
title: [
{
text: '在线构建',
subtext: '总计 ' + builderJson.all,
left: '25%',
textAlign: 'center'
},
{
text: '各版本下载',
subtext:
'总计 ' +
Object.keys(downloadJson).reduce(function (all, key) {
return all + downloadJson[key]
}, 0),
left: '75%',
textAlign: 'center'
},
{
text: '主题下载',
subtext:
'总计 ' +
Object.keys(themeJson).reduce(function (all, key) {
return all + themeJson[key]
}, 0),
left: '75%',
top: '50%',
textAlign: 'center'
}
],
grid: [
{
top: 50,
width: '50%',
bottom: '45%',
left: 10,
containLabel: true
},
{
top: '55%',
width: '50%',
bottom: 0,
left: 10,
containLabel: true
}
],
xAxis: [
{
type: 'value',
max: builderJson.all,
splitLine: {
show: false
}
},
{
type: 'value',
max: builderJson.all,
gridIndex: 1,
splitLine: {
show: false
}
}
],
yAxis: [
{
type: 'category',
data: Object.keys(builderJson.charts),
axisLabel: {
interval: 0,
rotate: 30
},
splitLine: {
show: false
}
},
{
gridIndex: 1,
type: 'category',
data: Object.keys(builderJson.components),
axisLabel: {
interval: 0,
rotate: 30
},
splitLine: {
show: false
}
}
],
series: [
{
type: 'bar',
stack: 'chart',
z: 3,
label: {
position: 'right',
show: true
},
data: Object.keys(builderJson.charts).map(function (key) {
return builderJson.charts[key]
})
},
{
type: 'bar',
stack: 'chart',
silent: true,
itemStyle: {
color: '#eee'
},
data: Object.keys(builderJson.charts).map(function (key) {
return builderJson.all - builderJson.charts[key]
})
},
{
type: 'bar',
stack: 'component',
xAxisIndex: 1,
yAxisIndex: 1,
z: 3,
label: {
position: 'right',
show: true
},
data: Object.keys(builderJson.components).map(function (key) {
return builderJson.components[key]
})
},
{
type: 'bar',
stack: 'component',
silent: true,
xAxisIndex: 1,
yAxisIndex: 1,
itemStyle: {
color: '#eee'
},
data: Object.keys(builderJson.components).map(function (key) {
return builderJson.all - builderJson.components[key]
})
},
{
type: 'pie',
radius: [0, '30%'],
center: ['75%', '25%'],
data: Object.keys(downloadJson).map(function (key) {
return {
name: key.replace('.js', ''),
value: downloadJson[key]
}
})
},
{
type: 'pie',
radius: [0, '30%'],
center: ['75%', '75%'],
data: Object.keys(themeJson).map(function (key) {
return {
name: key.replace('.js', ''),
value: themeJson[key]
}
})
}
]
}
onMounted(() => {
let Echarts = echarts.init(document.getElementById('WatermarkEChartsDownload'))
//
Echarts.setOption(option)
//
window.onresize = () => {
Echarts.resize()
}
})
</script>

View File

@ -1,60 +0,0 @@
<template>
<div id="BingZhuangTu01"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Pie, G2 } from '@antv/g2plot'
const G = G2.getEngine('canvas')
const data = [
{ sex: '男', sold: 0.45 },
{ sex: '女', sold: 0.55 }
]
onMounted(() => {
const piePlot = new Pie('BingZhuangTu01', {
appendPadding: 10,
data,
angleField: 'sold',
colorField: 'sex',
radius: 0.66,
color: ['#1677FF', '#f04864'],
label: {
content: (obj) => {
const group = new G.Group({})
group.addShape({
type: 'image',
attrs: {
x: 0,
y: 0,
width: 40,
height: 50,
img:
obj.sex === '男'
? 'https://gw.alipayobjects.com/zos/rmsportal/oeCxrAewtedMBYOETCln.png'
: 'https://gw.alipayobjects.com/zos/rmsportal/mweUsJpBWucJRixSfWVP.png'
}
})
group.addShape({
type: 'text',
attrs: {
x: 20,
y: 54,
text: obj.sex,
textAlign: 'center',
textBaseline: 'top',
fill: obj.sex === '男' ? '#1677FF' : '#f04864'
}
})
return group
}
},
interactions: [{ type: 'element-active' }]
})
piePlot.render()
})
</script>

View File

@ -1,35 +0,0 @@
<template>
<div id="BingZhuangTu02"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Pie } from '@antv/g2plot'
const data = [
{ type: '分类一', value: 27 },
{ type: '分类二', value: 25 },
{ type: '分类三', value: 18 },
{ type: '分类四', value: 15 },
{ type: '分类五', value: 10 },
{ type: '其他', value: 5 }
]
onMounted(() => {
const piePlot = new Pie('BingZhuangTu02', {
appendPadding: 10,
data,
angleField: 'value',
colorField: 'type',
radius: 0.75,
label: {
type: 'spider',
labelHeight: 28,
content: '{name}\n{percentage}'
},
interactions: [{ type: 'element-selected' }, { type: 'element-active' }]
})
piePlot.render()
})
</script>

View File

@ -1,51 +0,0 @@
<template>
<div id="BingZhuangTu03"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Pie } from '@antv/g2plot'
const data = [
{ type: '分类一', value: 27 },
{ type: '分类二', value: 25 },
{ type: '分类三', value: 18 },
{ type: '分类四', value: 15 },
{ type: '分类五', value: 10 },
{ type: '其他', value: 5 }
]
onMounted(() => {
const piePlot = new Pie('BingZhuangTu03', {
appendPadding: 10,
data,
angleField: 'value',
colorField: 'type',
radius: 1,
innerRadius: 0.6,
label: {
type: 'inner',
offset: '-50%',
content: '{value}',
style: {
textAlign: 'center',
fontSize: 14
}
},
interactions: [{ type: 'element-selected' }, { type: 'element-active' }],
statistic: {
title: false,
content: {
style: {
whiteSpace: 'pre-wrap',
overflow: 'hidden',
textOverflow: 'ellipsis'
},
content: 'AntV\nG2Plot'
}
}
})
piePlot.render()
})
</script>

View File

@ -1,81 +0,0 @@
<template>
<div id="BingZhuangTu04"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Pie, measureTextWidth } from '@antv/g2plot'
const data = [
{ type: '分类一', value: 27 },
{ type: '分类二', value: 25 },
{ type: '分类三', value: 18 },
{ type: '分类四', value: 15 },
{ type: '分类五', value: 10 },
{ type: '其他', value: 5 }
]
const renderStatistic = (containerWidth, text, style) => {
const { width: textWidth, height: textHeight } = measureTextWidth(text, style)
const R = containerWidth / 2
// r^2 = (w / 2)^2 + (h - offsetY)^2
let scale = 1
if (containerWidth < textWidth) {
scale = Math.min(Math.sqrt(Math.abs(Math.pow(R, 2) / (Math.pow(textWidth / 2, 2) + Math.pow(textHeight, 2)))), 1)
}
const textStyleStr = `width:${containerWidth}px;`
return `<div style="${textStyleStr};font-size:${scale}em;line-height:${scale < 1 ? 1 : 'inherit'};">${text}</div>`
}
onMounted(() => {
const piePlot = new Pie('BingZhuangTu04', {
appendPadding: 10,
data,
angleField: 'value',
colorField: 'type',
radius: 1,
innerRadius: 0.64,
meta: {
value: {
formatter: (v) => `${v} ¥`
}
},
label: {
type: 'inner',
offset: '-50%',
style: {
textAlign: 'center'
},
autoRotate: false,
content: '{value}'
},
statistic: {
title: {
offsetY: -4,
customHtml: (container, view, datum) => {
const { width, height } = container.getBoundingClientRect()
const d = Math.sqrt(Math.pow(width / 2, 2) + Math.pow(height / 2, 2))
const text = datum ? datum.type : '总计'
return renderStatistic(d, text, { fontSize: 28 })
}
},
content: {
offsetY: 4,
style: {
fontSize: '32px'
},
customHtml: (container, view, datum, data) => {
const { width } = container.getBoundingClientRect()
const text = datum ? `¥ ${datum.value}` : `¥ ${data.reduce((r, d) => r + d.value, 0)}`
return renderStatistic(width, text, { fontSize: 32 })
}
}
},
//
interactions: [{ type: 'element-selected' }, { type: 'element-active' }, { type: 'pie-statistic-active' }]
})
piePlot.render()
})
</script>

View File

@ -1,37 +0,0 @@
<template>
<div id="CiYunTu01"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { WordCloud } from '@antv/g2plot'
onMounted(() => {
fetch('https://gw.alipayobjects.com/os/antfincdn/jPKbal7r9r/mock.json')
.then((res) => res.json())
.then((data) => {
const wordCloud = new WordCloud('CiYunTu01', {
data,
wordField: 'x',
weightField: 'value',
color: '#122c6a',
wordStyle: {
fontFamily: 'Verdana',
fontSize: [24, 80]
},
//
interactions: [{ type: 'element-active' }],
state: {
active: {
// active
style: {
lineWidth: 3
}
}
}
})
wordCloud.render()
})
})
</script>

View File

@ -1,31 +0,0 @@
<template>
<div id="CiYunTu02"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { WordCloud } from '@antv/g2plot'
onMounted(() => {
fetch('https://gw.alipayobjects.com/os/antvdemo/assets/data/antv-keywords.json')
.then((res) => res.json())
.then((data) => {
const wordCloud = new WordCloud('CiYunTu02', {
data,
wordField: 'name',
weightField: 'value',
colorField: 'name',
wordStyle: {
fontFamily: 'Verdana',
fontSize: [8, 32],
rotation: 0
},
// [0, 1)
//
random: () => 0.5
})
wordCloud.render()
})
})
</script>

View File

@ -1,40 +0,0 @@
<template>
<div id="YiBiaoTu01"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Gauge } from '@antv/g2plot'
onMounted(() => {
const gauge = new Gauge('YiBiaoTu01', {
percent: 0.75,
range: {
ticks: [0, 1 / 3, 2 / 3, 1],
color: ['#F4664A', '#FAAD14', '#30BF78']
},
indicator: {
pointer: {
style: {
stroke: '#D0D0D0'
}
},
pin: {
style: {
stroke: '#D0D0D0'
}
}
},
statistic: {
content: {
style: {
fontSize: '36px',
lineHeight: '36px'
}
}
}
})
gauge.render()
})
</script>

View File

@ -1,22 +0,0 @@
<template>
<div id="YiBiaoTu02"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Liquid } from '@antv/g2plot'
onMounted(() => {
const liquidPlot = new Liquid('YiBiaoTu02', {
percent: 0.25,
outline: {
border: 4,
distance: 8
},
wave: {
length: 128
}
})
liquidPlot.render()
})
</script>

View File

@ -1,71 +0,0 @@
<template>
<div id="YiBiaoTu03"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Gauge } from '@antv/g2plot'
const ticks = [0, 1 / 3, 2 / 3, 1]
const color = ['#F4664A', '#FAAD14', '#30BF78']
onMounted(() => {
const gauge = new Gauge('YiBiaoTu03', {
percent: 0,
range: {
ticks: [0, 1],
color: ['l(0) 0:#F4664A 0.5:#FAAD14 1:#30BF78']
},
indicator: {
pointer: {
style: {
stroke: '#D0D0D0'
}
},
pin: {
style: {
stroke: '#D0D0D0'
}
}
},
statistic: {
title: {
formatter: ({ percent }) => {
if (percent < ticks[1]) {
return '差'
}
if (percent < ticks[2]) {
return '中'
}
return '优'
},
style: ({ percent }) => {
return {
fontSize: '36px',
lineHeight: 1,
color: percent < ticks[1] ? color[0] : percent < ticks[2] ? color[1] : color[2]
}
}
},
content: {
offsetY: 36,
style: {
fontSize: '24px',
color: '#4B535E'
},
formatter: () => '系统表现'
}
}
})
gauge.render()
let data = 0.7
const interval = setInterval(() => {
if (data >= 1.5) {
clearInterval(interval)
}
data += 0.005
gauge.changeData(data > 1 ? data - 1 : data)
}, 100)
})
</script>

View File

@ -1,58 +0,0 @@
<template>
<div id="YiBiaoTu04"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Liquid, measureTextWidth } from '@antv/g2plot'
onMounted(() => {
const liquidPlot = new Liquid(document.getElementById('YiBiaoTu04'), {
percent: 0.26,
radius: 0.8,
statistic: {
title: {
formatter: () => '盈利率',
style: ({ percent }) => ({
fill: percent > 0.65 ? 'white' : 'rgba(44,53,66,0.85)'
})
},
content: {
style: ({ percent }) => ({
fontSize: 60,
lineHeight: 1,
fill: percent > 0.65 ? 'white' : 'rgba(44,53,66,0.85)'
}),
customHtml: (container, view, { percent }) => {
const { width, height } = container.getBoundingClientRect()
const d = Math.sqrt(Math.pow(width / 2, 2) + Math.pow(height / 2, 2))
const text = `占比 ${(percent * 100).toFixed(0)}%`
const textWidth = measureTextWidth(text, { fontSize: 60 })
const scale = Math.min(d / textWidth, 1)
return `<div style="width:${d}px;display:flex;align-items:center;justify-content:center;font-size:${scale}em;line-height:${
scale <= 1 ? 1 : 'inherit'
}">${text}</div>`
}
}
},
liquidStyle: ({ percent }) => {
return {
fill: percent > 0.45 ? '#5B8FF9' : '#FAAD14',
stroke: percent > 0.45 ? '#5B8FF9' : '#FAAD14'
}
},
color: () => '#5B8FF9'
})
liquidPlot.render()
let data = 0.25
const interval = setInterval(() => {
data += Math.min(Math.random() * 0.1, 0.1)
if (data < 0.75) {
liquidPlot.changeData(data)
} else {
clearInterval(interval)
}
}, 500)
})
</script>

View File

@ -1,27 +0,0 @@
<template>
<div id="LouDouTu01"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Funnel } from '@antv/g2plot'
const data = [
{ stage: '简历筛选', number: 253 },
{ stage: '初试人数', number: 151 },
{ stage: '复试人数', number: 113 },
{ stage: '录取人数', number: 87 },
{ stage: '入职人数', number: 59 }
]
onMounted(() => {
const funnelPlot = new Funnel('LouDouTu01', {
data: data,
xField: 'stage',
yField: 'number',
legend: false
})
funnelPlot.render()
})
</script>

View File

@ -1,48 +0,0 @@
<template>
<div id="LouDouTu02"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Funnel } from '@antv/g2plot'
const data = [
{ stage: '简历筛选', number: 253, company: 'A公司' },
{ stage: '初试人数', number: 151, company: 'A公司' },
{ stage: '复试人数', number: 113, company: 'A公司' },
{ stage: '录取人数', number: 87, company: 'A公司' },
{ stage: '入职人数', number: 59, company: 'A公司' },
{ stage: '简历筛选', number: 303, company: 'B公司' },
{ stage: '初试人数', number: 251, company: 'B公司' },
{ stage: '复试人数', number: 153, company: 'B公司' },
{ stage: '录取人数', number: 117, company: 'B公司' },
{ stage: '入职人数', number: 79, company: 'B公司' }
]
onMounted(() => {
const funnelPlot = new Funnel('LouDouTu02', {
data,
xField: 'stage',
yField: 'number',
compareField: 'company',
meta: {
stage: {
alias: '行为'
},
pv: {
alias: '人数',
formatter: (v) => `${v}`
}
},
tooltip: {
fields: ['stage', 'number', 'company'],
formatter: (v) => ({
name: `${v.company}${v.stage}`,
value: v.number
})
},
legend: false
})
funnelPlot.render()
})
</script>

View File

@ -1,24 +0,0 @@
<template>
<div id="MianJiTu01"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Area } from '@antv/g2plot'
onMounted(() => {
fetch('https://gw.alipayobjects.com/os/bmw-prod/360c3eae-0c73-46f0-a982-4746a6095010.json')
.then((res) => res.json())
.then((data) => {
const area = new Area('MianJiTu01', {
data,
xField: 'timePeriod',
yField: 'value',
xAxis: {
range: [0, 1]
}
})
area.render()
})
})
</script>

View File

@ -1,30 +0,0 @@
<template>
<div id="MianJiTu02"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Area } from '@antv/g2plot'
onMounted(() => {
fetch('https://gw.alipayobjects.com/os/bmw-prod/1d565782-dde4-4bb6-8946-ea6a38ccf184.json')
.then((res) => res.json())
.then((data) => {
const area = new Area('MianJiTu02', {
data,
xField: 'Date',
yField: 'scales',
xAxis: {
range: [0, 1],
tickCount: 5
},
areaStyle: () => {
return {
fill: 'l(270) 0:#ffffff 0.5:#7ec2f3 1:#1677FF'
}
}
})
area.render()
})
})
</script>

View File

@ -1,22 +0,0 @@
<template>
<div id="ZiDanTu03"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Area } from '@antv/g2plot'
onMounted(() => {
fetch('https://gw.alipayobjects.com/os/bmw-prod/b21e7336-0b3e-486c-9070-612ede49284e.json')
.then((res) => res.json())
.then((data) => {
const area = new Area('ZiDanTu03', {
data,
xField: 'date',
yField: 'value',
seriesField: 'country'
})
area.render()
})
})
</script>

View File

@ -1,35 +0,0 @@
<template>
<div id="ZiDanTu04"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Area } from '@antv/g2plot'
onMounted(() => {
fetch('https://gw.alipayobjects.com/os/bmw-prod/67ef5751-b228-417c-810a-962f978af3e7.json')
.then((res) => res.json())
.then((data) => {
const area = new Area('ZiDanTu04', {
data,
xField: 'year',
yField: 'value',
seriesField: 'country',
color: ['#82d1de', '#cb302d', '#e3ca8c'],
areaStyle: {
fillOpacity: 0.7
},
appendPadding: 10,
isPercent: true,
yAxis: {
label: {
formatter: (value) => {
return value * 100
}
}
}
})
area.render()
})
})
</script>

View File

@ -1,48 +0,0 @@
<template>
<div id="SanDianTu01"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Scatter } from '@antv/g2plot'
onMounted(() => {
fetch('https://gw.alipayobjects.com/os/antfincdn/aao6XnO5pW/IMDB.json')
.then((res) => res.json())
.then((data) => {
const scatterPlot = new Scatter('SanDianTu01', {
appendPadding: 10,
data,
xField: 'Revenue (Millions)',
yField: 'Rating',
shape: 'circle',
colorField: 'Genre',
size: 4,
yAxis: {
nice: true,
line: {
style: {
stroke: '#aaa'
}
}
},
xAxis: {
min: -100,
grid: {
line: {
style: {
stroke: '#eee'
}
}
},
line: {
style: {
stroke: '#aaa'
}
}
}
})
scatterPlot.render()
})
})
</script>

View File

@ -1,52 +0,0 @@
<template>
<div id="SanDianTu02"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Scatter } from '@antv/g2plot'
onMounted(() => {
fetch('https://gw.alipayobjects.com/os/antfincdn/t81X1wXdoj/scatter-data.json')
.then((res) => res.json())
.then((data) => {
const scatterPlot = new Scatter('SanDianTu02', {
appendPadding: 30,
data,
xField: 'x',
yField: 'y',
colorField: 'genre',
color: [
'r(0.4, 0.3, 0.7) 0:rgba(255,255,255,0.5) 1:#5B8FF9',
'r(0.4, 0.4, 0.7) 0:rgba(255,255,255,0.5) 1:#61DDAA'
],
sizeField: 'size',
size: [5, 20],
shape: 'circle',
yAxis: {
nice: true,
line: {
style: {
stroke: '#eee'
}
}
},
xAxis: {
grid: {
line: {
style: {
stroke: '#eee'
}
}
},
line: {
style: {
stroke: '#eee'
}
}
}
})
scatterPlot.render()
})
})
</script>

View File

@ -1,51 +0,0 @@
<template>
<div id="SanDianTu03"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Scatter } from '@antv/g2plot'
onMounted(() => {
fetch('https://gw.alipayobjects.com/os/bmw-prod/3e4db10a-9da1-4b44-80d8-c128f42764a8.json')
.then((res) => res.json())
.then((data) => {
const scatterPlot = new Scatter('SanDianTu03', {
appendPadding: 30,
data,
xField: 'xG conceded',
yField: 'Shot conceded',
colorField: 'Result',
size: 5,
shape: 'circle',
pointStyle: {
fillOpacity: 1
},
yAxis: {
nice: true,
line: {
style: {
stroke: '#aaa'
}
}
},
xAxis: {
grid: {
line: {
style: {
stroke: '#eee'
}
}
},
line: {
style: {
stroke: '#aaa'
}
}
},
label: {}
})
scatterPlot.render()
})
})
</script>

View File

@ -1,337 +0,0 @@
<template>
<div id="SanDianTu04"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Scatter } from '@antv/g2plot'
const data = [
{
city: '上海',
搜索UV: 1.5,
端DAU: 6,
搜索DAU渗透率: 3
},
{
city: '台北',
搜索UV: 2,
端DAU: 5,
搜索DAU渗透率: 13
},
{
city: '北京',
搜索UV: 7,
端DAU: 3.6,
搜索DAU渗透率: 16
},
{
city: '济南',
搜索UV: 5,
端DAU: 5,
搜索DAU渗透率: 16
},
{
city: '青岛',
搜索UV: 2,
端DAU: 1,
搜索DAU渗透率: 19
},
{
city: '杭州',
搜索UV: 7,
端DAU: 2,
搜索DAU渗透率: 90
},
{
city: '广东',
搜索UV: 7.4,
端DAU: 1.5,
搜索DAU渗透率: 30
},
{
city: '无锡',
搜索UV: 1,
端DAU: 1,
搜索DAU渗透率: 34
},
{
city: '重庆',
搜索UV: 7,
端DAU: 5,
搜索DAU渗透率: 46
},
{
city: '成都',
搜索UV: 3.4,
端DAU: 2.3,
搜索DAU渗透率: 49
},
{
city: '哈尔滨',
搜索UV: 0.5,
端DAU: 6.5,
搜索DAU渗透率: 51
},
{
city: '内蒙古',
搜索UV: 2.5,
端DAU: 5,
搜索DAU渗透率: 51
},
{
city: '云南',
搜索UV: 1,
端DAU: 5,
搜索DAU渗透率: 53
},
{
city: '河北',
搜索UV: 6,
端DAU: 5,
搜索DAU渗透率: 57
},
{
city: '陕西',
搜索UV: 2,
端DAU: 3,
搜索DAU渗透率: 57
},
{
city: '苏州',
搜索UV: 3,
端DAU: 4.6,
搜索DAU渗透率: 65
},
{
city: '四川',
搜索UV: 6,
端DAU: 7,
搜索DAU渗透率: 68
},
{
city: '贵阳',
搜索UV: 5,
端DAU: 3.4,
搜索DAU渗透率: 68
},
{
city: '台湾',
搜索UV: 5,
端DAU: 2,
搜索DAU渗透率: 69
},
{
city: '哈尔滨',
搜索UV: 2,
端DAU: 7,
搜索DAU渗透率: 78
},
{
city: '天津',
搜索UV: 4.4,
端DAU: 5,
搜索DAU渗透率: 45
},
{
city: '长沙',
搜索UV: 3.4,
端DAU: 7,
搜索DAU渗透率: 29
},
{
city: '沧州',
搜索UV: 3,
端DAU: 1,
搜索DAU渗透率: 94
},
{
city: '宁波',
搜索UV: 6,
端DAU: 3,
搜索DAU渗透率: 99
}
]
onMounted(() => {
const scatterPlot = new Scatter('SanDianTu04', {
height: 400,
autoFit: false,
appendPadding: 16,
data,
xField: '搜索UV',
yField: '端DAU',
sizeField: '搜索DAU渗透率',
size: [12, 30],
shape: 'circle',
pointStyle: {
fill: '#D6E3FD',
fillOpacity: 0.6,
stroke: '#6d9bf9'
},
tooltip: {
showTitle: true,
showMarkers: false,
fields: ['搜索UV', '端DAU', '搜索DAU渗透率'],
customContent: (title, items) => {
const field = items?.[0]
const formatterInfo = {
搜索UV: (value) => value + '万',
端DAU: (value) => value + '万',
搜索DAU渗透率: () => '%'
}
let htmlStr = `<div style="margin:10px 0;font-weight:700;">${field?.data?.city}</div><div class="g2-tooltip-items">`
items.forEach((item) => {
htmlStr += `<div class="g2-tooltip-item" style="margin-bottom:8px;display:flex;justify-content:space-between;">
<span class="g2-tooltip-item-label" style="margin-right: 12px;">${item.name}</span>
<span class="g2-tooltip-item-value">${item.value + formatterInfo[item.name](item.value)}</span>
</div>`
})
htmlStr += '</div>'
return htmlStr
}
},
xAxis: {
grid: {
line: {
style: {
stroke: '#eee'
}
}
},
label: {
formatter: (v) => v !== '0' ? v + '%' : v
},
line: null
},
label: {
formatter: (item) => {
return item.city
},
offsetY: 12,
style: {
fontSize: 12,
fill: 'rgba(0,0,0,0.85)'
}
},
yAxis: {
min: 0,
line: null,
label: {
formatter: (v) => v !== '0' ? v + '%' : v
}
},
annotations: [
{
type: 'text',
position: [4, 8],
content: '搜索DAU渗透率',
offsetY: -8,
style: {
fontSize: 12,
textAlign: 'center'
}
},
{
type: 'text',
position: [8, 4],
content: '搜索DAU渗透率',
rotate: Math.PI / 2,
offsetY: -40,
offsetX: 8,
style: {
fontSize: 12
}
},
{
type: 'region',
start: [7, 7],
end: [7.8, 7.8],
top: true,
style: {
fill: '#fff',
fillOpacity: 0.5,
opacity: 1
}
},
{
type: 'region',
start: [0.2, 7],
end: [1, 7.8],
top: true,
style: {
fill: '#fff',
fillOpacity: 0.5,
opacity: 1
}
},
{
type: 'region',
start: [7, 0.2],
end: [7.8, 1],
top: true,
style: {
fill: '#fff',
fillOpacity: 0.5,
opacity: 1
}
}
],
quadrant: {
xBaseline: 4,
yBaseline: 4,
lineStyle: {
lineDash: [4, 2],
lineWidth: 2
},
regionStyle: [
{
fill: '#5bd8a6',
fillOpacity: 0.1
},
{
fill: '#667796',
fillOpacity: 0.1
},
{
fill: '#fff'
},
{
fill: '#f7664e',
fillOpacity: 0.1
}
],
labels: [
{
content: '热门市场',
position: [7.2, 7],
style: {
fill: 'rgba(0,0,0, 0.85)',
textAlign: 'start'
}
},
{
content: '潜力市场',
position: [0.2, 7],
style: {
fill: 'rgba(0,0,0, 0.85)',
textAlign: 'start'
}
},
{
content: ''
},
{
content: '提频市场',
position: [7.2, 1],
style: {
fill: 'rgba(0,0,0, 0.85)',
textAlign: 'start'
}
}
]
}
})
scatterPlot.render()
})
</script>

View File

@ -1,30 +0,0 @@
<template>
<div id="TiaoXingTu01"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Bar } from '@antv/g2plot'
const data = [
{ year: '1951 年', value: 38 },
{ year: '1952 年', value: 52 },
{ year: '1956 年', value: 61 },
{ year: '1957 年', value: 145 },
{ year: '1958 年', value: 48 }
]
onMounted(() => {
const bar = new Bar('TiaoXingTu01', {
data,
xField: 'value',
yField: 'year',
seriesField: 'year',
legend: {
position: 'top-left'
}
})
bar.render()
})
</script>

View File

@ -1,126 +0,0 @@
<template>
<div id="TiaoXingTu02"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Bar } from '@antv/g2plot'
const data = [
{
year: '1991',
value: 3,
type: 'Lon'
},
{
year: '1992',
value: 4,
type: 'Lon'
},
{
year: '1993',
value: 3.5,
type: 'Lon'
},
{
year: '1994',
value: 5,
type: 'Lon'
},
{
year: '1995',
value: 4.9,
type: 'Lon'
},
{
year: '1996',
value: 6,
type: 'Lon'
},
{
year: '1997',
value: 7,
type: 'Lon'
},
{
year: '1998',
value: 9,
type: 'Lon'
},
{
year: '1999',
value: 13,
type: 'Lon'
},
{
year: '1991',
value: 3,
type: 'Bor'
},
{
year: '1992',
value: 4,
type: 'Bor'
},
{
year: '1993',
value: 3.5,
type: 'Bor'
},
{
year: '1994',
value: 5,
type: 'Bor'
},
{
year: '1995',
value: 4.9,
type: 'Bor'
},
{
year: '1996',
value: 6,
type: 'Bor'
},
{
year: '1997',
value: 7,
type: 'Bor'
},
{
year: '1998',
value: 9,
type: 'Bor'
},
{
year: '1999',
value: 13,
type: 'Bor'
}
]
onMounted(() => {
const stackedBarPlot = new Bar('TiaoXingTu02', {
data: data.reverse(),
isStack: true,
xField: 'value',
yField: 'year',
seriesField: 'type',
label: {
// label
position: 'middle', // 'left', 'middle', 'right'
//
layout: [
//
{ type: 'interval-adjust-position' },
//
{ type: 'interval-hide-overlap' },
//
{ type: 'adjust-color' }
]
}
})
stackedBarPlot.render()
})
</script>

View File

@ -1,89 +0,0 @@
<template>
<div id="TiaoXingTu03"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Bar } from '@antv/g2plot'
const data = [
{
label: 'Mon.',
type: 'series1',
value: 2800
},
{
label: 'Mon.',
type: 'series2',
value: 2260
},
{
label: 'Tues.',
type: 'series1',
value: 1800
},
{
label: 'Tues.',
type: 'series2',
value: 1300
},
{
label: 'Wed.',
type: 'series1',
value: 950
},
{
label: 'Wed.',
type: 'series2',
value: 900
},
{
label: 'Thur.',
type: 'series1',
value: 500
},
{
label: 'Thur.',
type: 'series2',
value: 390
},
{
label: 'Fri.',
type: 'series1',
value: 170
},
{
label: 'Fri.',
type: 'series2',
value: 100
}
]
onMounted(() => {
const stackedBarPlot = new Bar('TiaoXingTu03', {
data,
isGroup: true,
xField: 'value',
yField: 'label',
/** 自定义颜色 */
// color: ['#1383ab', '#c52125'],
seriesField: 'type',
marginRatio: 0,
label: {
// label
position: 'middle', // 'left', 'middle', 'right'
//
layout: [
//
{ type: 'interval-adjust-position' },
//
{ type: 'interval-hide-overlap' },
//
{ type: 'adjust-color' }
]
}
})
stackedBarPlot.render()
})
</script>

View File

@ -1,34 +0,0 @@
<template>
<div id="TiaoXingTu04"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Bar } from '@antv/g2plot'
const data = [
{ type: '分类一', values: [76, 100] },
{ type: '分类二', values: [56, 108] },
{ type: '分类三', values: [38, 129] },
{ type: '分类四', values: [58, 155] },
{ type: '分类五', values: [45, 120] },
{ type: '分类六', values: [23, 99] },
{ type: '分类七', values: [18, 56] },
{ type: '分类八', values: [18, 34] }
]
onMounted(() => {
const barPlot = new Bar('TiaoXingTu04', {
data: data.reverse(),
xField: 'values',
yField: 'type',
isRange: true,
label: {
position: 'middle',
layout: [{ type: 'adjust-color' }]
}
})
barPlot.render()
})
</script>

View File

@ -1,27 +0,0 @@
<template>
<div id="ZheXianTu01"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Line } from '@antv/g2plot'
onMounted(() => {
fetch('https://gw.alipayobjects.com/os/bmw-prod/1d565782-dde4-4bb6-8946-ea6a38ccf184.json')
.then((res) => res.json())
.then((data) => {
const line = new Line('ZheXianTu01', {
data,
padding: 'auto',
xField: 'Date',
yField: 'scales',
xAxis: {
// type: 'timeCat',
tickCount: 5
}
})
line.render()
})
})
</script>

View File

@ -1,32 +0,0 @@
<template>
<div id="ZheXianTu02"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Line } from '@antv/g2plot'
onMounted(() => {
fetch('https://gw.alipayobjects.com/os/bmw-prod/55424a73-7cb8-4f79-b60d-3ab627ac5698.json')
.then((res) => res.json())
.then((data) => {
const line = new Line('ZheXianTu02', {
data,
xField: 'year',
yField: 'value',
seriesField: 'category',
xAxis: {
type: 'time'
},
yAxis: {
label: {
//
formatter: (v) => `${v}`.replace(/\d{1,3}(?=(\d{3})+$)/g, (s) => `${s},`)
}
}
})
line.render()
})
})
</script>

View File

@ -1,32 +0,0 @@
<template>
<div id="ZheXianTu03"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Line } from '@antv/g2plot'
const data = [
{ year: '1991', value: 3 },
{ year: '1992', value: 4 },
{ year: '1993', value: 3.5 },
{ year: '1994', value: 5 },
{ year: '1995', value: 4.9 },
{ year: '1996', value: 6 },
{ year: '1997', value: 7 },
{ year: '1998', value: 9 },
{ year: '1999', value: 13 },
{ year: '1999', value: 8 }
]
onMounted(() => {
const linePlot = new Line('ZheXianTu03', {
data,
xField: 'year',
yField: 'value',
stepType: 'vh'
})
linePlot.render()
})
</script>

View File

@ -1,48 +0,0 @@
<template>
<div id="ZheXianTu04"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Line } from '@antv/g2plot'
const seriesKey = 'series'
const valueKey = 'value'
const processData = (data, yFields, meta) => {
const result = []
data.forEach((d) => {
yFields.forEach((yField) => {
const name = meta?.[yField]?.alias || yField
result.push({ ...d, [seriesKey]: name, [valueKey]: d[yField] })
})
})
return result
}
onMounted(() => {
fetch('https://gw.alipayobjects.com/os/antfincdn/nHVKXA8ClI/multiple-measures-line-data.json')
.then((data) => data.json())
.then((data) => {
const meta = {
date: {
alias: '销售日期'
},
price: {
alias: '单价'
},
discount_price: {
alias: '折扣单价'
}
}
const line = new Line('ZheXianTu04', {
data: processData(data, ['price', 'discount_price'], meta),
padding: 'auto',
xField: 'date',
yField: valueKey,
seriesField: seriesKey,
appendPadding: [0, 8, 0, 0]
})
line.render()
})
})
</script>

View File

@ -1,76 +0,0 @@
<template>
<div id="ZhuZhuangTu01"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Column } from '@antv/g2plot'
const data = [
{
type: '家具家电',
sales: 38
},
{
type: '粮油副食',
sales: 52
},
{
type: '生鲜水果',
sales: 61
},
{
type: '美容洗护',
sales: 145
},
{
type: '母婴用品',
sales: 48
},
{
type: '进口食品',
sales: 38
},
{
type: '食品饮料',
sales: 38
},
{
type: '家庭清洁',
sales: 38
}
]
onMounted(() => {
const columnPlot = new Column('ZhuZhuangTu01', {
data,
xField: 'type',
yField: 'sales',
label: {
// label
position: 'middle', // 'top', 'bottom', 'middle',
//
style: {
fill: '#FFFFFF',
opacity: 0.6
}
},
xAxis: {
label: {
autoHide: true,
autoRotate: false
}
},
meta: {
type: {
alias: '类别'
},
sales: {
alias: '销售额'
}
}
})
columnPlot.render()
})
</script>

View File

@ -1,37 +0,0 @@
<template>
<div id="ZhuZhuangTu02"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Column } from '@antv/g2plot'
onMounted(() => {
fetch('https://gw.alipayobjects.com/os/antfincdn/8elHX%26irfq/stack-column-data.json')
.then((data) => data.json())
.then((data) => {
const stackedColumnPlot = new Column('ZhuZhuangTu02', {
data,
isStack: true,
xField: 'year',
yField: 'value',
seriesField: 'type',
label: {
// label
position: 'middle', // 'top', 'bottom', 'middle'
//
layout: [
//
{ type: 'interval-adjust-position' },
//
{ type: 'interval-hide-overlap' },
//
{ type: 'adjust-color' }
]
}
})
stackedColumnPlot.render()
})
})
</script>

View File

@ -1,120 +0,0 @@
<template>
<div id="ZhuZhuangTu03"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Column } from '@antv/g2plot'
const data = [
{
name: 'London',
月份: 'Jan.',
月均降雨量: 18.9
},
{
name: 'London',
月份: 'Feb.',
月均降雨量: 28.8
},
{
name: 'London',
月份: 'Mar.',
月均降雨量: 39.3
},
{
name: 'London',
月份: 'Apr.',
月均降雨量: 81.4
},
{
name: 'London',
月份: 'May',
月均降雨量: 47
},
{
name: 'London',
月份: 'Jun.',
月均降雨量: 20.3
},
{
name: 'London',
月份: 'Jul.',
月均降雨量: 24
},
{
name: 'London',
月份: 'Aug.',
月均降雨量: 35.6
},
{
name: 'Berlin',
月份: 'Jan.',
月均降雨量: 12.4
},
{
name: 'Berlin',
月份: 'Feb.',
月均降雨量: 23.2
},
{
name: 'Berlin',
月份: 'Mar.',
月均降雨量: 34.5
},
{
name: 'Berlin',
月份: 'Apr.',
月均降雨量: 99.7
},
{
name: 'Berlin',
月份: 'May',
月均降雨量: 52.6
},
{
name: 'Berlin',
月份: 'Jun.',
月均降雨量: 35.5
},
{
name: 'Berlin',
月份: 'Jul.',
月均降雨量: 37.4
},
{
name: 'Berlin',
月份: 'Aug.',
月均降雨量: 42.4
}
]
onMounted(() => {
const stackedColumnPlot = new Column('ZhuZhuangTu03', {
data,
isGroup: true,
xField: '月份',
yField: '月均降雨量',
seriesField: 'name',
/** 设置颜色 */
//color: ['#1ca9e6', '#f88c24'],
/** 设置间距 */
// marginRatio: 0.1,
label: {
// label
position: 'middle', // 'top', 'middle', 'bottom'
//
layout: [
//
{ type: 'interval-adjust-position' },
//
{ type: 'interval-hide-overlap' },
//
{ type: 'adjust-color' }
]
}
})
stackedColumnPlot.render()
})
</script>

View File

@ -1,138 +0,0 @@
<template>
<div id="ZhuZhuangTu04"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Column } from '@antv/g2plot'
const data = [
{
country: 'Asia',
year: '1750',
value: 502
},
{
country: 'Asia',
year: '1800',
value: 635
},
{
country: 'Asia',
year: '1850',
value: 809
},
{
country: 'Asia',
year: '1900',
value: 947
},
{
country: 'Asia',
year: '1950',
value: 1402
},
{
country: 'Asia',
year: '1999',
value: 3634
},
{
country: 'Asia',
year: '2050',
value: 5268
},
{
country: 'Africa',
year: '1750',
value: 106
},
{
country: 'Africa',
year: '1800',
value: 107
},
{
country: 'Africa',
year: '1850',
value: 111
},
{
country: 'Africa',
year: '1900',
value: 133
},
{
country: 'Africa',
year: '1950',
value: 221
},
{
country: 'Africa',
year: '1999',
value: 767
},
{
country: 'Africa',
year: '2050',
value: 1766
},
{
country: 'Europe',
year: '1750',
value: 163
},
{
country: 'Europe',
year: '1800',
value: 203
},
{
country: 'Europe',
year: '1850',
value: 276
},
{
country: 'Europe',
year: '1900',
value: 408
},
{
country: 'Europe',
year: '1950',
value: 547
},
{
country: 'Europe',
year: '1999',
value: 729
},
{
country: 'Europe',
year: '2050',
value: 628
}
]
onMounted(() => {
const columnPlot = new Column('ZhuZhuangTu04', {
data,
xField: 'year',
yField: 'value',
seriesField: 'country',
isPercent: true,
isStack: true,
label: {
position: 'middle',
content: (item) => {
return item.value.toFixed(2)
},
style: {
fill: '#fff'
}
}
})
columnPlot.render()
})
</script>

View File

@ -1,73 +0,0 @@
<template>
<div id="ZiDanTu01"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Bullet } from '@antv/g2plot'
const data = [
{
title: '满意度',
ranges: [40, 70, 100],
measures: [80],
target: 85
}
]
onMounted(() => {
const bulletPlot = new Bullet('ZiDanTu01', {
data,
measureField: 'measures',
rangeField: 'ranges',
targetField: 'target',
xField: 'title',
color: {
range: ['#FFbcb8', '#FFe0b0', '#bfeec8'],
measure: '#5B8FF9',
target: '#39a3f4'
},
xAxis: {
line: null
},
yAxis: false,
label: {
target: true
},
// legend
legend: {
custom: true,
position: 'bottom',
items: [
{
value: '差',
name: '差',
marker: { symbol: 'square', style: { fill: '#FFbcb8', r: 5 } }
},
{
value: '良',
name: '良',
marker: { symbol: 'square', style: { fill: '#FFe0b0', r: 5 } }
},
{
value: '优',
name: '优',
marker: { symbol: 'square', style: { fill: '#bfeec8', r: 5 } }
},
{
value: '实际值',
name: '实际值',
marker: { symbol: 'square', style: { fill: '#5B8FF9', r: 5 } }
},
{
value: '目标值',
name: '目标值',
marker: { symbol: 'line', style: { stroke: '#39a3f4', r: 5 } }
}
]
}
})
bulletPlot.render()
})
</script>

View File

@ -1,96 +0,0 @@
<template>
<div id="ZiDanTu02"></div>
</template>
<script setup>
import { onMounted } from 'vue'
import { Bullet } from '@antv/g2plot'
const data = [
{
title: '重庆',
ranges: [30, 90, 120],
measures: [65],
target: 80
},
{
title: '杭州',
ranges: [30, 90, 120],
measures: [50],
target: 100
},
{
title: '广州',
ranges: [30, 90, 120],
measures: [40],
target: 85
},
{
title: '深圳',
ranges: [30, 90, 120],
measures: [50],
target: 100
}
]
onMounted(() => {
const bulletPlot = new Bullet('ZiDanTu02', {
data,
measureField: 'measures',
rangeField: 'ranges',
targetField: 'target',
xField: 'title',
color: {
range: ['#FFbcb8', '#FFe0b0', '#bfeec8'],
measure: '#5B8FF9',
target: '#39a3f4'
},
label: {
measure: {
position: 'middle',
style: {
fill: '#fff'
}
}
},
xAxis: {
line: null
},
yAxis: false,
// legend
legend: {
custom: true,
position: 'bottom',
items: [
{
value: '差',
name: '差',
marker: { symbol: 'square', style: { fill: '#FFbcb8', r: 5 } }
},
{
value: '良',
name: '良',
marker: { symbol: 'square', style: { fill: '#FFe0b0', r: 5 } }
},
{
value: '优',
name: '优',
marker: { symbol: 'square', style: { fill: '#bfeec8', r: 5 } }
},
{
value: '实际值',
name: '实际值',
marker: { symbol: 'square', style: { fill: '#5B8FF9', r: 5 } }
},
{
value: '目标值',
name: '目标值',
marker: { symbol: 'line', style: { stroke: '#39a3f4', r: 5 } }
}
]
}
})
bulletPlot.render()
})
</script>

View File

@ -1,31 +0,0 @@
<template>
<a-row :gutter="[10, 10]">
<a-col :span="12">
<a-card title="某站点用户Access From" :bordered="false">
<RefererOfAWebsite class="xn-ht400" />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="圆角环形图" :bordered="false">
<DoughnutChartWithRoundedCorner class="xn-ht400" />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="饼图自定义样式" :bordered="false">
<CustomizedPie class="xn-ht400" />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="基础南丁格尔玫瑰图" :bordered="false">
<NightingaleChart class="xn-ht400" />
</a-card>
</a-col>
</a-row>
</template>
<script setup name="eCBingZhuangTu">
import RefererOfAWebsite from '@/components/Chart/eCBingZhuangTu/RefererOfAWebsite.vue'
import DoughnutChartWithRoundedCorner from '@/components/Chart/eCBingZhuangTu/DoughnutChartWithRoundedCorner.vue'
import CustomizedPie from '@/components/Chart/eCBingZhuangTu/CustomizedPie.vue'
import NightingaleChart from '@/components/Chart/eCBingZhuangTu/NightingaleChart.vue'
</script>

View File

@ -1,11 +0,0 @@
<template>
<a-row :gutter="[10, 10]">
<a-col :span="24">
<a-card title="横条" :bordered="false">
<h2>横条卡住了</h2>
</a-card>
</a-col>
</a-row>
</template>
<script setup name="eCHengTiaoTu"></script>

View File

@ -1,20 +0,0 @@
<template>
<a-row :gutter="[10, 10]">
<a-col :span="12">
<a-card title="基础K线图" :bordered="false">
<basic-candlestick class="xn-ht400" />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="上证指数" :bordered="false">
<shang-hai-index class="xn-ht400" />
</a-card>
</a-col>
</a-row>
</template>
<!--ec官网https://echarts.apache.org/zh/index.html-->
<!--可以看博客https://blog.csdn.net/qq_41636947/article/details/110879791-->
<script setup name="eCKXianTu">
import BasicCandlestick from '@/components/Chart/eCKXianTu/BasicCandlestick.vue'
import ShangHaiIndex from '@/components/Chart/eCKXianTu/ShangHaiIndex.vue'
</script>

View File

@ -1,31 +0,0 @@
<template>
<a-row :gutter="[10, 10]">
<a-col :span="12">
<a-card title="漏斗图" :bordered="false">
<FunnelChart class="xn-ht400" />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="漏斗图(对比)" :bordered="false">
<FunnelCompare class="xn-ht400" />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="漏斗图" :bordered="false">
<CustomizedFunnel class="xn-ht400" />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="Funnel" :bordered="false">
<MultipleFunnels class="xn-ht400" />
</a-card>
</a-col>
</a-row>
</template>
<script setup name="eCLouDouTu">
import FunnelChart from '@/components/Chart/eCLouDouTu/FunnelChart.vue'
import FunnelCompare from '@/components/Chart/eCLouDouTu/FunnelCompare.vue'
import CustomizedFunnel from '@/components/Chart/eCLouDouTu/CustomizedFunnel.vue'
import MultipleFunnels from '@/components/Chart/eCLouDouTu/MultipleFunnels.vue'
</script>

View File

@ -1,31 +0,0 @@
<template>
<a-row :gutter="[10, 10]">
<a-col :span="12">
<a-card title="AQI 气泡图" :bordered="false">
<ScatterAqiColor class="xn-ht400" />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="基础散点图" :bordered="false">
<BasicScatterChart class="xn-ht400" />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="数据聚合" :bordered="false">
<ClusteringProcess class="xn-ht400" />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="涟漪特效散点图" :bordered="false">
<EffectScatterChart class="xn-ht400" />
</a-card>
</a-col>
</a-row>
</template>
<script setup name="eCSanDianTu">
import BasicScatterChart from '@/components/Chart/eCSanDianTu/BasicScatterChart.vue'
import ClusteringProcess from '@/components/Chart/eCSanDianTu/ClusteringProcess.vue'
import EffectScatterChart from '@/components/Chart/eCSanDianTu/EffectScatterChart.vue'
import ScatterAqiColor from '@/components/Chart/eCSanDianTu/ScatterAqiColor.vue'
</script>

View File

@ -1,9 +0,0 @@
<template>
<a-card title="折线树图" :bordered="false">
<TreeWithPolylineEdge style="height: 600px" />
</a-card>
</template>
<script setup name="eCShuXingTu">
import TreeWithPolylineEdge from '@/components/Chart/eCShuXingTu/TreeWithPolylineEdge.vue'
</script>

View File

@ -1,31 +0,0 @@
<template>
<a-row :gutter="[10, 10]">
<a-col :span="12">
<a-card title="基础折线图" :bordered="false">
<BasicLineChart class="xn-ht400" />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="折线图堆叠" :bordered="false">
<StackedLineChart class="xn-ht400" />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="堆叠面积图" :bordered="false">
<StackedAreaChart class="xn-ht400" />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="阶梯折线图" :bordered="false">
<StepLine class="xn-ht400" />
</a-card>
</a-col>
</a-row>
</template>
<script setup name="eCXianXingTu">
import BasicLineChart from '@/components/Chart/eCXianXingTu/BasicLineChart.vue'
import StackedLineChart from '@/components/Chart/eCXianXingTu/StackedLineChart.vue'
import StackedAreaChart from '@/components/Chart/eCXianXingTu/StackedAreaChart.vue'
import StepLine from '@/components/Chart/eCXianXingTu/StepLine.vue'
</script>

View File

@ -1,31 +0,0 @@
<template>
<a-row :gutter="[10, 10]">
<a-col :span="12">
<a-card title="基础仪表盘" :bordered="false">
<GaugeBasicChart class="xn-ht400" />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="阶段速度仪表盘" :bordered="false">
<StageSpeedGauge class="xn-ht400" />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="气温仪表盘" :bordered="false">
<TemperatureGaugeChart class="xn-ht400" />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="进度仪表盘" :bordered="false">
<GrogressGauge class="xn-ht400" />
</a-card>
</a-col>
</a-row>
</template>
<script setup name="eCYiBiaoTu">
import GaugeBasicChart from '@/components/Chart/eCYiBiaoTu/GaugeBasicChart.vue'
import StageSpeedGauge from '@/components/Chart/eCYiBiaoTu/StageSpeedGauge.vue'
import TemperatureGaugeChart from '@/components/Chart/eCYiBiaoTu/TemperatureGaugeChart.vue'
import GrogressGauge from '@/components/Chart/eCYiBiaoTu/GrogressGauge.vue'
</script>

View File

@ -1,11 +0,0 @@
<template>
<a-row :gutter="[10, 10]">
<a-col :span="24">
<a-card title="折柱" :bordered="false">
<h2>折柱也卡住了</h2>
</a-card>
</a-col>
</a-row>
</template>
<script setup name="eCZheZhuTu"></script>

View File

@ -1,31 +0,0 @@
<template>
<a-row :gutter="[10, 10]">
<a-col :span="12">
<a-card title="基础柱状图" :bordered="false">
<BasicBar class="xn-ht400" />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="柱状图标签旋转" :bordered="false">
<BarLabelRotation class="xn-ht400" />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="交错正负轴标签" :bordered="false">
<BarChartWithNegativeValue class="xn-ht400" />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="水印 - ECharts 下载统计" :bordered="false">
<WatermarkEChartsDownload class="xn-ht400" />
</a-card>
</a-col>
</a-row>
</template>
<script setup name="eCZhuZhuangTu">
import BasicBar from '@/components/Chart/eCZhuZhuangTu/BasicBar.vue'
import BarLabelRotation from '@/components/Chart/eCZhuZhuangTu/BarLabelRotation.vue'
import BarChartWithNegativeValue from '@/components/Chart/eCZhuZhuangTu/BarChartWithNegativeValue.vue'
import WatermarkEChartsDownload from '@/components/Chart/eCZhuZhuangTu/WatermarkEChartsDownload.vue'
</script>

View File

@ -1,26 +0,0 @@
<template>
<a-row :gutter="[10, 10]">
<a-col :span="12">
<a-card title="基础饼图" :bordered="false">
<BingZhuangTu01 />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="饼图-蜘蛛布局标签" :bordered="false">
<BingZhuangTu02 />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="基础环图" :bordered="false">
<BingZhuangTu03 />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="环图统计指标卡" :bordered="false">
<BingZhuangTu04 />
</a-card>
</a-col>
</a-row>
</template>
<script setup name="g2BingZhuangTu"></script>

View File

@ -1,16 +0,0 @@
<template>
<a-row :gutter="[10, 10]">
<a-col :span="12">
<a-card title="基础词云图" :bordered="false">
<CiYunTu01 />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="词云图-每次渲染保持位置不变" :bordered="false">
<CiYunTu02 />
</a-card>
</a-col>
</a-row>
</template>
<script setup name="g2CiYunTu"></script>

View File

@ -1,26 +0,0 @@
<template>
<a-row :gutter="[10, 10]">
<a-col :span="12">
<a-card title="仪表盘(多色)" :bordered="false">
<JinDuTu01 />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="水波图" :bordered="false">
<JinDuTu02 />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="渐变仪表盘" :bordered="false">
<JinDuTu03 />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="样式自定义的水波图" :bordered="false">
<JinDuTu04 />
</a-card>
</a-col>
</a-row>
</template>
<script setup name="g2JinDuTu"></script>

View File

@ -1,16 +0,0 @@
<template>
<a-row :gutter="[10, 10]">
<a-col :span="12">
<a-card title="基础漏斗图" :bordered="false">
<LouDouTu01 />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="对比漏斗图" :bordered="false">
<LouDouTu02 />
</a-card>
</a-col>
</a-row>
</template>
<script setup name="g2LouDouTu"></script>

View File

@ -1,26 +0,0 @@
<template>
<a-row :gutter="[10, 10]">
<a-col :span="12">
<a-card title="基础面积图" :bordered="false">
<MianJiTu01 />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="渐变色面积图" :bordered="false">
<MianJiTu02 />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="堆叠面积图" :bordered="false">
<MianJiTu03 />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="百分比堆叠面积图" :bordered="false">
<MianJiTu04 />
</a-card>
</a-col>
</a-row>
</template>
<script setup name="g2MianJiTu"></script>

View File

@ -1,26 +0,0 @@
<template>
<a-row :gutter="[10, 10]">
<a-col :span="12">
<a-card title="散点图颜色映射" :bordered="false">
<SanDianTu01 />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="伪 3D 气泡图" :bordered="false">
<SanDianTu02 />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="散点图图形标签" :bordered="false">
<SanDianTu03 />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="气泡图-自定义tooltip" :bordered="false">
<SanDianTu04 />
</a-card>
</a-col>
</a-row>
</template>
<script setup name="g2SanDianTu"></script>

View File

@ -1,26 +0,0 @@
<template>
<a-row :gutter="[10, 10]">
<a-col :span="12">
<a-card title="基础条形图" :bordered="false">
<TiaoXingTu01 />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="堆叠条形图" :bordered="false">
<TiaoXingTu02 />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="分组条形图" :bordered="false">
<TiaoXingTu03 />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="区间条形图" :bordered="false">
<TiaoXingTu04 />
</a-card>
</a-col>
</a-row>
</template>
<script setup name="g2TiaoXingTu"></script>

View File

@ -1,26 +0,0 @@
<template>
<a-row :gutter="[10, 10]">
<a-col :span="12">
<a-card title="基础折线图" :bordered="false">
<ZheXianTu01 />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="多折线图-二氧化碳排放量来源" :bordered="false">
<ZheXianTu02 />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="阶梯折线图" :bordered="false">
<ZheXianTu03 />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="多指标折线图" :bordered="false">
<ZheXianTu04 />
</a-card>
</a-col>
</a-row>
</template>
<script setup name="g2ZheXianTu"></script>

View File

@ -1,26 +0,0 @@
<template>
<a-row :gutter="[10, 10]">
<a-col :span="12">
<a-card title="基础柱状图" :bordered="false">
<ZhuZhuangTu01 />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="堆叠柱状图" :bordered="false">
<ZhuZhuangTu02 />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="分组柱状图" :bordered="false">
<ZhuZhuangTu03 />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="分组柱状图" :bordered="false">
<ZhuZhuangTu04 />
</a-card>
</a-col>
</a-row>
</template>
<script setup name="g2ZhuZhuangTu"></script>

View File

@ -1,16 +0,0 @@
<template>
<a-row :gutter="[10, 10]">
<a-col :span="12">
<a-card title="子弹图" :bordered="false">
<ZiDanTu01 />
</a-card>
</a-col>
<a-col :span="12">
<a-card title="多组子弹图" :bordered="false">
<ZiDanTu02 />
</a-card>
</a-col>
</a-row>
</template>
<script setup name="g2ZiDanTu"></script>

View File

@ -1155,24 +1155,6 @@ INSERT INTO `SYS_RELATION` VALUES ('1728455598281166852', '1570687866138206208',
INSERT INTO `SYS_RELATION` VALUES ('1728455598281166853', '1570687866138206208', '1548901111999773326', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1548901111999773326\",\"buttonInfo\":[]}');
INSERT INTO `SYS_RELATION` VALUES ('1728455598281166854', '1570687866138206208', '1548901111999773254', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1548901111999773254\",\"buttonInfo\":[]}');
INSERT INTO `SYS_RELATION` VALUES ('1728455598281166855', '1570687866138206208', '1548901111999773427', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1548901111999773427\",\"buttonInfo\":[]}');
INSERT INTO `SYS_RELATION` VALUES ('1728455598281166856', '1570687866138206208', '1548901111999773428', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1548901111999773428\",\"buttonInfo\":[]}');
INSERT INTO `SYS_RELATION` VALUES ('1728455598281166857', '1570687866138206208', '1548901111999773429', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1548901111999773429\",\"buttonInfo\":[]}');
INSERT INTO `SYS_RELATION` VALUES ('1728455598281166858', '1570687866138206208', '1548901111999773430', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1548901111999773430\",\"buttonInfo\":[]}');
INSERT INTO `SYS_RELATION` VALUES ('1728455598281166859', '1570687866138206208', '1548901111999773431', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1548901111999773431\",\"buttonInfo\":[]}');
INSERT INTO `SYS_RELATION` VALUES ('1728455598289555457', '1570687866138206208', '1548901111999773432', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1548901111999773432\",\"buttonInfo\":[]}');
INSERT INTO `SYS_RELATION` VALUES ('1728455598289555458', '1570687866138206208', '1548901111999773433', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1548901111999773433\",\"buttonInfo\":[]}');
INSERT INTO `SYS_RELATION` VALUES ('1728455598289555459', '1570687866138206208', '1548901111999773434', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1548901111999773434\",\"buttonInfo\":[]}');
INSERT INTO `SYS_RELATION` VALUES ('1728455598289555460', '1570687866138206208', '1548901111999773435', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1548901111999773435\",\"buttonInfo\":[]}');
INSERT INTO `SYS_RELATION` VALUES ('1728455598289555461', '1570687866138206208', '1548901111999773436', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1548901111999773436\",\"buttonInfo\":[]}');
INSERT INTO `SYS_RELATION` VALUES ('1728455598289555462', '1570687866138206208', '1548901111999773437', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1548901111999773437\",\"buttonInfo\":[]}');
INSERT INTO `SYS_RELATION` VALUES ('1728455598289555463', '1570687866138206208', '1548901111999773438', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1548901111999773438\",\"buttonInfo\":[]}');
INSERT INTO `SYS_RELATION` VALUES ('1728455598289555464', '1570687866138206208', '1548901111999773439', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1548901111999773439\",\"buttonInfo\":[]}');
INSERT INTO `SYS_RELATION` VALUES ('1728455598289555465', '1570687866138206208', '1548901111999773440', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1548901111999773440\",\"buttonInfo\":[]}');
INSERT INTO `SYS_RELATION` VALUES ('1728455598289555466', '1570687866138206208', '1548901111999773441', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1548901111999773441\",\"buttonInfo\":[]}');
INSERT INTO `SYS_RELATION` VALUES ('1728455598289555467', '1570687866138206208', '1548901111999773442', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1548901111999773442\",\"buttonInfo\":[]}');
INSERT INTO `SYS_RELATION` VALUES ('1728455598289555468', '1570687866138206208', '1548901111999773443', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1548901111999773443\",\"buttonInfo\":[]}');
INSERT INTO `SYS_RELATION` VALUES ('1728455598289555469', '1570687866138206208', '1548901111999773444', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1548901111999773444\",\"buttonInfo\":[]}');
INSERT INTO `SYS_RELATION` VALUES ('1728455598289555470', '1570687866138206208', '1548901111999773445', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1548901111999773445\",\"buttonInfo\":[]}');
INSERT INTO `SYS_RELATION` VALUES ('1728455598289555471', '1570687866138206208', '1689894316554067969', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1689894316554067969\",\"buttonInfo\":[]}');
INSERT INTO `SYS_RELATION` VALUES ('1728455598289555472', '1570687866138206208', '1689894577238450177', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1689894577238450177\",\"buttonInfo\":[]}');
INSERT INTO `SYS_RELATION` VALUES ('1728455598289555473', '1570687866138206208', '1623378675591671810', 'SYS_ROLE_HAS_RESOURCE', '{\"menuId\":\"1623378675591671810\",\"buttonInfo\":[]}');
@ -1260,24 +1242,6 @@ INSERT INTO `SYS_RESOURCE` VALUES ('1548901111999773254', '1548901111999773250',
INSERT INTO `SYS_RESOURCE` VALUES ('1548901111999773326', '1548901111999773126', '操作日志', 'devOplog', '4jbjjrz8h7', 'MENU', '1548901111999770525', 'MENU', '/dev/oplog', 'dev/log/oplog/index', 'bars-outlined', NULL, NULL, NULL, NULL, 29, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `SYS_RESOURCE` VALUES ('1548901111999773426', '0', '开发示例', NULL, 'kyd5idwiwr', 'MENU', '1548901111999770525', 'CATALOG', '/e2re4evf5y', NULL, 'project-outlined', NULL, NULL, NULL, NULL, 30, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `SYS_RESOURCE` VALUES ('1548901111999773427', '1548901111999773426', '图标选择', 'tuBiaoXuanZe', '97ygt0hy8t', 'MENU', '1548901111999770525', 'MENU', '/exm/iconSelect', 'exm/iconSelect/index', 'appstore-outlined', NULL, NULL, NULL, NULL, 31, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `SYS_RESOURCE` VALUES ('1548901111999773428', '1548901111999773426', 'ECK线图', 'eCKXianTu', '7voetv0mru', 'MENU', '1548901111999770525', 'MENU', '/exm/chart/eCKXianTu', 'exm/chart/eCKXianTu', 'appstore-outlined', NULL, NULL, NULL, NULL, 32, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `SYS_RESOURCE` VALUES ('1548901111999773429', '1548901111999773426', 'EC仪表图', 'eCYiBiaoTu', 'c4uor9wg1b', 'MENU', '1548901111999770525', 'MENU', '/exm/chart/eCYiBiaoTu', 'exm/chart/eCYiBiaoTu', 'appstore-outlined', NULL, NULL, NULL, NULL, 33, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `SYS_RESOURCE` VALUES ('1548901111999773430', '1548901111999773426', 'EC散点图', 'eCSanDianTu', '6r6ti8izxi', 'MENU', '1548901111999770525', 'MENU', '/exm/chart/eCSanDianTu', 'exm/chart/eCSanDianTu', 'appstore-outlined', NULL, NULL, NULL, NULL, 34, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `SYS_RESOURCE` VALUES ('1548901111999773431', '1548901111999773426', 'EC柱状图', 'eCZhuZhuangTu', 's3ft1ri9qz', 'MENU', '1548901111999770525', 'MENU', '/exm/chart/eCZhuZhuangTu', 'exm/chart/eCZhuZhuangTu', 'appstore-outlined', NULL, NULL, NULL, NULL, 35, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `SYS_RESOURCE` VALUES ('1548901111999773432', '1548901111999773426', 'EC树形图', 'eCShuXingTu', '63lz6owubp', 'MENU', '1548901111999770525', 'MENU', '/exm/chart/eCShuXingTu', 'exm/chart/eCShuXingTu', 'appstore-outlined', NULL, NULL, NULL, NULL, 36, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `SYS_RESOURCE` VALUES ('1548901111999773433', '1548901111999773426', 'EC漏斗图', 'eCLouDouTu', 'd46vov3j2d', 'MENU', '1548901111999770525', 'MENU', '/exm/chart/eCLouDouTu', 'exm/chart/eCLouDouTu', 'appstore-outlined', NULL, NULL, NULL, NULL, 37, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `SYS_RESOURCE` VALUES ('1548901111999773434', '1548901111999773426', 'EC线形图', 'eCXianXingTu', 'dgp8hclhlr', 'MENU', '1548901111999770525', 'MENU', '/exm/chart/eCXianXingTu', 'exm/chart/eCXianXingTu', 'appstore-outlined', NULL, NULL, NULL, NULL, 38, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `SYS_RESOURCE` VALUES ('1548901111999773435', '1548901111999773426', 'EC饼状图', 'eCBingZhuangTu', '2y1g7u2p1k', 'MENU', '1548901111999770525', 'MENU', '/exm/chart/eCBingZhuangTu', 'exm/chart/eCBingZhuangTu', 'appstore-outlined', NULL, NULL, NULL, NULL, 39, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `SYS_RESOURCE` VALUES ('1548901111999773436', '1548901111999773426', 'G2进度图', 'g2JinDuTu', '8vvhyctv2w', 'MENU', '1548901111999770525', 'MENU', '/exm/chart/g2JinDuTu', 'exm/chart/g2JinDuTu', 'appstore-outlined', NULL, NULL, NULL, NULL, 40, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `SYS_RESOURCE` VALUES ('1548901111999773437', '1548901111999773426', 'G2子弹图', 'g2ZiDanTu', '3lgc3ci5f3', 'MENU', '1548901111999770525', 'MENU', '/exm/chart/g2ZiDanTu', 'exm/chart/g2ZiDanTu', 'appstore-outlined', NULL, NULL, NULL, NULL, 41, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `SYS_RESOURCE` VALUES ('1548901111999773438', '1548901111999773426', 'G2散点图', 'g2SanDianTu', 'e22qm4b30d', 'MENU', '1548901111999770525', 'MENU', '/exm/chart/g2SanDianTu', 'exm/chart/g2SanDianTu', 'appstore-outlined', NULL, NULL, NULL, NULL, 42, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `SYS_RESOURCE` VALUES ('1548901111999773439', '1548901111999773426', 'G2柱状图', 'g2ZhuZhuangTu', '92huf33fcf', 'MENU', '1548901111999770525', 'MENU', '/exm/chart/g2ZhuZhuangTu', 'exm/chart/g2ZhuZhuangTu', 'appstore-outlined', NULL, NULL, NULL, NULL, 43, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `SYS_RESOURCE` VALUES ('1548901111999773440', '1548901111999773426', 'G2漏斗图', 'g2LouDouTu', '7w3gnlts80', 'MENU', '1548901111999770525', 'MENU', '/exm/chart/g2LouDouTu', 'exm/chart/g2LouDouTu', 'appstore-outlined', NULL, NULL, NULL, NULL, 44, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `SYS_RESOURCE` VALUES ('1548901111999773441', '1548901111999773426', 'G2折线图', 'g2ZheXianTu', '4g3gr90z1i', 'MENU', '1548901111999770525', 'MENU', '/exm/chart/g2ZheXianTu', 'exm/chart/g2ZheXianTu', 'appstore-outlined', NULL, NULL, NULL, NULL, 45, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `SYS_RESOURCE` VALUES ('1548901111999773442', '1548901111999773426', 'G2词云图', 'g2CiYunTu', 'atpbicf8em', 'MENU', '1548901111999770525', 'MENU', '/exm/chart/g2CiYunTu', 'exm/chart/g2CiYunTu', 'appstore-outlined', NULL, NULL, NULL, NULL, 46, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `SYS_RESOURCE` VALUES ('1548901111999773443', '1548901111999773426', 'G2面积图', 'g2MianJiTu', 'm5lnxo3d56', 'MENU', '1548901111999770525', 'MENU', '/exm/chart/g2MianJiTu', 'exm/chart/g2MianJiTu', 'appstore-outlined', NULL, NULL, NULL, NULL, 47, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `SYS_RESOURCE` VALUES ('1548901111999773444', '1548901111999773426', 'G2饼状图', 'g2BingZhuangTu', 'tmn482a18x', 'MENU', '1548901111999770525', 'MENU', '/exm/chart/g2BingZhuangTu', 'exm/chart/g2BingZhuangTu', 'appstore-outlined', NULL, NULL, NULL, NULL, 48, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `SYS_RESOURCE` VALUES ('1548901111999773445', '1548901111999773426', 'G2条形图', 'g2TiaoXingTu', 'aej0gwpe43', 'MENU', '1548901111999770525', 'MENU', '/exm/chart/g2TiaoXingTu', 'exm/chart/g2TiaoXingTu', 'appstore-outlined', NULL, NULL, NULL, NULL, 49, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `SYS_RESOURCE` VALUES ('1548901111999773976', NULL, '业务', NULL, 'biz', 'MODULE', NULL, NULL, NULL, NULL, 'profile-outlined', '#d81b43', NULL, NULL, NULL, 50, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `SYS_RESOURCE` VALUES ('1548901111999773977', '0', '公司架构', NULL, '3xavzjxt5z', 'MENU', '1548901111999773976', 'CATALOG', '/1nlpdpnief', NULL, 'cluster-outlined', NULL, NULL, NULL, NULL, 51, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `SYS_RESOURCE` VALUES ('1548901111999773978', '1548901111999773977', '机构管理', 'bizOrg', 'mnt1f21q40', 'MENU', '1548901111999773976', 'MENU', '/biz/org', 'biz/org/index', 'cluster-outlined', NULL, NULL, NULL, NULL, 52, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);