使用Echarts绘制柱状图
创作时间:
作者:
@小白创作中心
使用Echarts绘制柱状图
引用
CSDN
1.
https://blog.csdn.net/qq_52569656/article/details/137844107
基础柱状图绘制
在React18项目中使用Echarts5绘制柱状图,首先需要定义一个容器并设置其宽高。然后通过init
方法创建一个Echarts实例,并调用实例对象上的setOption
方法进行渲染。
添加常用配置
在基础图表上,可以添加一些常用配置,如图例(legend)和提示框(tooltip),使图表更加完整和易读。
同一图表展示两个柱状图
有时需要在一个图表中展示两种数据的对比,例如数量和百分比。这可以通过在series
数组中新增一项柱状图配置来实现。
设置两条坐标轴
当图表中包含不同类型的数据时,可以设置两条坐标轴来区分。例如,一个表示数量,另一个表示百分比。
处理数据量过多的问题
当数据量特别大时,可以使用dataZoom
组件来处理。通过设置start
和end
属性,可以控制图表的显示范围。
处理X轴文字过长问题
当X轴的文字过长时,可以通过设置axisLabel
的rotate
属性来旋转文字,或者通过formatter
函数来换行显示。
完整代码
import './App.css';
import { useEffect, useState } from 'react';
import * as echarts from 'echarts'
let chartRef = null
function App() {
const initChart = () => {
chartRef = echarts.init(document.getElementById('chart'))
const option = {
title: {
text: '北极星',
textStyle: {
color: '#345345'
}
},
tooltip: {},
legend: {
data: [
{
name: '数量图',
icon: 'circle'
},
{
name: '占比图',
icon: 'circle'
}
],
itemWidth: 25,
itemHeight: 14,
},
xAxis: {
type: 'category',
data: ['大白', '小黑', '哈哈', '呵呵', '嘿嘿', '北极星超级超级超级超级', '超级', '小黑3', '你干嘛', '恶狠狠', '嘿嘿9'],
axisPointer: {
show: true,
type: 'line',
},
axisLabel: {
rotate: 23,
fontSize: 11,
formatter: (params) => {
if (params.length > 6) {
const pre = params.slice(0, 6)
const end = params.slice(6)
return pre + '\n' + end
}
return params
}
}
},
yAxis: [
{
type: 'value',
name: '单位:个',
position: "left",
},
{
type: 'value',
name: '百分比:%',
position: "right",
}
],
color: ['#73c0de', '#3ba272'],
series: [
{
name: '数量图',
type: 'bar',
data: [ 1200, 200, 150, 800, 170, 110, 130, 150, 800, 170, 110],
yAxisIndex: 0,
barGap: '2%',
label: {
show: true,
position: 'top',
distance: 5
}
},
{
name: '占比图',
type: 'bar',
yAxisIndex: 1,
data: [ 12, 20, 15, 8, 17, 11, 29, 15, 8, 17, 11],
label: {
show: true,
position: 'top',
distance: 5
}
},
],
dataZoom: [
{
type: 'slider',
height: 20,
start: 2,
end: 70
}
]
}
chartRef.setOption(option)
}
useEffect(() => {
initChart()
}, [])
return (
<div className="App">
<div className='box' id='chart'></div>
</div>
);
}
export default App;
/* App.css */
.App {
display: flex;
align-items: center;
justify-content: center;
padding-top: 50px;
}
.box {
width: 700px;
height: 500px;
border: 1px solid #000;
}
热门推荐
广元旺苍:茶香四溢的"汉唐茶乡"
四姑娘山"长穿毕"徒步攻略:三天穿越35.7公里,领略高原壮美风光
汉朝的断袖之癖:文化现象与历史解读
渐冻症如何预防呼吸功能受损?
茂名市举办“赓续·2025·清明祭英烈”活动
“肺”不好,秋冬如何未病先防
中医说的风邪怎么治疗
黑老虎的扦插育苗技术,最好在秋季可进行
《南京大屠杀史料集》续编第56—72册出版,新增多国史料进一步佐证历史真相
微信文件备份攻略:应对14天自动清理,确保重要数据不丢失
U212CD潜艇最新进展:技术突破与国际合作
小米手机CPU虚焊问题解析
促进孩子语言发展,亲子一起玩扮演游戏的5个实用技巧
金庸笔下的明教总坛,光明顶究竟在何方?
八道私房菜精选:创新与传统的完美结合
Excel折线图进阶:轻松呈现最高点、最低点与中位线
Excel折线图坐标轴数据选择指南
锐龙7 7840h和i7 13700h对比:游戏与生产力的抉择
最适合长期陪伴的狗狗品种:长寿犬种推荐
为什么宇宙中大多数天体都呈现“圆形”呢?背后的秘密来自一种动力学!
林将军谋反:古代军事制度与权谋冲突的法律剖析
企业破产清算后债权人如何追回债务
省心≠掉以轻心!如何预防智能家电“使性子”,看这篇→
80推拉塑钢窗材料米重
公司变更去掉地区的公司名称怎么办理
英文名怎么取
电动牙刷能替代牙线吗?
儿童过敏危害大,预防从环境入手
慰语重阳会有期——《红楼梦》中的重阳
春季新兵,火热开训!