这里使用echarts for react
npm i echarts --save
npm i echarts-for-react --save
代码如下:
import React from 'react';
import 'url-search-params-polyfill';
// import YearPicker from "./components/YearPicker"
import ReactEcharts from 'echarts-for-react';
import './App.css'
import { Row, Col, Button } from 'antd';
export default class App extends React.Component {
constructor(props) {
super(props);
this.state = {}
}
componentDidMount() {
}
getOption = () => {
var colors = ['#5793f3', '#d14a61', '#675bba'];
return {
color: colors,
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross'
}
},
grid: {
right: '20%'
},
toolbox: {
feature: {
dataView: {show: true, readOnly: false},
restore: {show: true},
saveAsImage: {show: true}
}
},
legend: {
data:['蒸发量','降水量','平均温度']
},
xAxis: [
{
type: 'category',
axisTick: {
alignWithLabel: true
},
data: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
}
],
yAxis: [
{
type: 'value',
name: '蒸发量',
min: 0,
max: 250,
position: 'right',
axisLine: {
lineStyle: {
color: colors[0]
}
},
axisLabel: {
formatter: '{value} ml'
}
},
{
type: 'value',
name: '降水量',
min: 0,
max: 250,
position: 'right',
offset: 80,
axisLine: {
lineStyle: {
color: colors[1]
}
},
axisLabel: {
formatter: '{value} ml'
}
},
{
type: 'value',
name: '温度',
min: 0,
max: 25,
position: 'left',
axisLine: {
lineStyle: {
color: colors[2]
}
},
axisLabel: {
formatter: '{value} °C'
}
}
],
series: [
{
name:'蒸发量',
type:'bar',
data:[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
},
{
name:'降水量',
type:'bar',
yAxisIndex: 1,
data:[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]
},
{
name:'平均温度',
type:'line',
yAxisIndex: 2,
data:[2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2]
}
]
}
}
onEvents = () => {
return {
'legendselectchanged': this.onChartLegendselectChanged
}
}
onChartLegendselectChanged = (params) => {
const echarts_instance = this.echart.getEchartsInstance();
const option = echarts_instance.getOption();
const select_value = Object.values(params.selected)
let n = 0;
select_value.map(item => {
if(!item) {
n++
}
});
if(n===select_value.length) {
option.legend[0].selected[params.name] = true;
}
echarts_instance.setOption(option)
}
render (){
return (
<div>
<Row style={{padding: '20px'}}>
<h3>只保留一个图例</h3>
<ReactEcharts
notMerge
onEvents={this.onEvents()}
option={this.getOption()}
ref={(e) => this.echart = e}
/>
</Row>
</div>
);
}
}最终有一个图例不可点击

详情见我码云项目地址https://gitee.com/lenggushi/EchartsDemo-react.git
版权声明:本文为qq_39055963原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。