‘lijianhao’
3 years ago
4 changed files with 188 additions and 19 deletions
@ -0,0 +1,110 @@ |
|||
import React from 'react' |
|||
import { useEffect, useRef } from 'react'; |
|||
import * as echarts from 'echarts'; |
|||
|
|||
const PieChart = (props) => { |
|||
|
|||
const { width, height, data, colorList, underColorList, total, text } = props |
|||
|
|||
const chartRef = useRef(null); |
|||
let name = [], emptyName = [] |
|||
// const name = data?.map(d)
|
|||
data?.forEach(d => { |
|||
name.push(d.name) |
|||
emptyName.push({ |
|||
name: '', |
|||
value: d.value |
|||
}) |
|||
}) |
|||
useEffect(() => { |
|||
let chartInstance = echarts.init(chartRef.current); |
|||
const option = { |
|||
tooltip: { |
|||
trigger: "item", |
|||
}, |
|||
legend: { |
|||
orient: "vertical", |
|||
itemWidth: 10, |
|||
itemHeight: 10, |
|||
right: '30%', |
|||
top: 'center', |
|||
align: 'left', |
|||
data: name, |
|||
textStyle: { |
|||
color: "#fff", |
|||
}, |
|||
}, |
|||
grid: { |
|||
left: '10%' |
|||
}, |
|||
// title: [
|
|||
// {
|
|||
// text: text,
|
|||
// top: "58%",
|
|||
// left: '16%',
|
|||
// textStyle: {
|
|||
// color: "#E9F7FF",
|
|||
// fontSize: 14,
|
|||
// },
|
|||
// },
|
|||
// {
|
|||
// text: total,
|
|||
// top: "40%",
|
|||
// left: '10%',
|
|||
// textStyle: {
|
|||
// fontSize: "30",
|
|||
// color: "#FFFFFF",
|
|||
// fontFamily: "YouSheBiaoTiHei",
|
|||
// },
|
|||
// },
|
|||
// ],
|
|||
series: [ |
|||
{ |
|||
name: "底层背景", |
|||
type: "pie", |
|||
hoverAnimation: false, |
|||
legendHoverLink: false, |
|||
radius: ["60%", "72%"], |
|||
center: ['25%', '50%'], |
|||
color: underColorList, |
|||
label: { |
|||
show: false |
|||
}, |
|||
labelLine: { |
|||
show: false |
|||
}, |
|||
tooltip: { |
|||
show: false, |
|||
}, |
|||
|
|||
data: emptyName, |
|||
}, |
|||
{ |
|||
name: "已绿化里程统计", |
|||
type: "pie", |
|||
radius: ["67%", "80%"], |
|||
center: ['25%', '50%'], |
|||
color: colorList, |
|||
label: { |
|||
show: false |
|||
}, |
|||
data: data, |
|||
}, |
|||
], |
|||
}; |
|||
|
|||
chartInstance.setOption(option); |
|||
window.addEventListener('resize', () => { |
|||
if (chartInstance) { |
|||
chartInstance.resize() |
|||
} |
|||
}) |
|||
}, []) |
|||
return ( |
|||
<div style={{ width: width || '100%', height: height || '100%' }}> |
|||
<div ref={chartRef} style={{ width: '100%', height: '100%' }}></div> |
|||
</div> |
|||
|
|||
) |
|||
} |
|||
export default PieChart |
Loading…
Reference in new issue