<script setup lang="ts"> import { ref, onMounted } from 'vue'; import * as echarts from 'echarts'; type EChartsOption = echarts.EChartsOption; type ECharts = echarts.ECharts; const colors = ['#95D1CC', '#809A6F', '#FDAF75']; const chartMultipleYRef = ref<any>(null); onMounted(() => { getChart(); }); var multipleYChart: ECharts; function getChart() { if (multipleYChart != null && multipleYChart != undefined) { multipleYChart.dispose(); } multipleYChart = echarts.init(chartMultipleYRef.value); let option: EChartsOption; option = { color: colors, tooltip: { trigger: 'axis', axisPointer: { type: 'cross', }, }, grid: { top: 40, bottom: 50, left: 50, right: 150, }, legend: { top: 7, data: ['蒸发', '降水', '温度'], }, xAxis: [ { type: 'category', axisTick: { alignWithLabel: true, }, data: [ '1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月', ], }, ], yAxis: [ { type: 'value', name: '蒸发', position: 'right', alignTicks: true, axisLine: { show: true, lineStyle: { color: colors[0], }, }, axisLabel: { formatter: '{value} ml', }, }, { type: 'value', name: '降水', position: 'right', alignTicks: true, offset: 80, axisLine: { show: true, lineStyle: { color: colors[1], }, }, axisLabel: { formatter: '{value} ml', }, }, { type: 'value', name: '温度', position: 'left', alignTicks: true, axisLine: { show: true, 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, ], }, ], }; option && multipleYChart.setOption(option); } </script> <template> <div class="fit" ref="chartMultipleYRef"></div> </template> <style lang="scss" scoped></style>