当前位置: 首页 > wzjs >正文

甘肃省住房和城乡建设部网站广州网站建设 seo

甘肃省住房和城乡建设部网站,广州网站建设 seo,洛阳网站建设网站建设,专业提供建站模板的公司用Echarts的柱状图实现圆柱体效果 在数据可视化的世界里,Echarts凭借其强大的功能和丰富的特性,成为众多开发者的首选工具。本文将深入探讨如何利用Echarts的柱状图来实现独特的圆柱体效果,通过详细剖析代码,让大家了解其中的实现…

用Echarts的柱状图实现圆柱体效果

在数据可视化的世界里,Echarts凭借其强大的功能和丰富的特性,成为众多开发者的首选工具。本文将深入探讨如何利用Echarts的柱状图来实现独特的圆柱体效果,通过详细剖析代码,让大家了解其中的实现原理和技巧。

最终结果

在这里插入图片描述

1. 前期准备

在开始编写代码前,我们需要引入必要的依赖。代码中通过以下方式引入相关模块:

import CommonChart from '../../CommonChart';
import { EChartOption } from '../../utils/EChartOption';
import * as echarts from 'echarts';

CommonChart 可能是一个自定义的图表组件,对 Echarts 进行了进一步封装,方便在项目中使用。EChartOption 导入了 Echarts 的配置选项类型定义,而 echarts 库则是实现图表的核心。

2. 数据结构与模拟数据

为了展示充电和放电数据在不同电站的分布情况,我们定义了如下数据结构和模拟数据:

interface StatisticsBarChartProps {chargingList: number[];dischargingList: number[];timeList: string[];
}const mockData: StatisticsBarChartProps = {chargingList: [36, 20, 30, 30, 16],dischargingList: [20, 16, 20, 20, 8],timeList: ['电站1', '电站2', '电站3', '电站4', '电站5']
};

StatisticsBarChartProps 接口描述了数据结构,包含充电量列表 chargingList、放电量列表 dischargingList 和电站名称列表 timeListmockData 则是符合该接口结构的模拟数据,用于测试和演示。

3. 核心组件 - StatisticsBarChart

StatisticsBarChart 组件是实现圆柱体效果柱状图的关键部分。

const StatisticsBarChart = (props: StatisticsBarChartProps) => {const { chargingList, dischargingList, timeList } = props;const option = {animation: false,grid: {bottom: '15%',left: '12.5%',top: '20%',right: '10%'},tooltip: {trigger: 'axis',axisPointer: {type: 'shadow',label: {backgroundColor: '#283b56'}}},legend: {top: '0%',left: 'right',textStyle: {color: '#fff'},itemHeight: 8,itemWidth: 8,itemGap: 16,data: [{name: '充电',icon: 'circle',itemStyle: {color: 'rgba(82, 223, 142, 1)'}},{name: '放电',icon: 'circle',itemStyle: {color: 'rgba(255, 157, 0, 1)'}}]},xAxis: {type: 'category',axisLabel: {color: '#fff'},data: timeList},yAxis: [{type: 'value',scale: true,name: '电量/MWh',min: 0,interval: 10,splitLine: {show: true,lineStyle: {color: 'rgba(255,255,255,0.19)',width: 1,type: 'dashed'}},axisLine: {show: false,lineStyle: {color: '#fff'}},nameTextStyle: {color: '#fff',padding: [3, 4, 5, 10]}}],series: [{name: '充电',type: 'bar',barWidth: 14,label: {show: true,position: 'top',color: '#fff'},itemStyle: {color: {type: 'linear',x: 0,y: 0,x2: 0,y2: 1,colorStops: [{offset:0,color: 'rgba(82, 223, 142, 0)'},{offset: 1,color: 'rgba(82, 223, 142, 0.5)'}],global: false}},data: chargingList},{name: '放电',type: 'bar',barWidth: 14,label: {show: true,position: 'top',color: '#fff'},itemStyle: {color: {type: 'linear',x: 0,y: 0,x2: 0,y2: 1,colorStops: [{offset:0,color: 'rgba(250, 157, 0, 0)'},{offset: 1,color: 'rgba(255, 157, 0, 0.5)'}],global: false}},data: dischargingList,barGap: '30%'},{type: 'custom',tooltip: {show: false},renderItem: (params: echarts.CustomSeriesRenderItemParams, api: echarts.CustomSeriesRenderItemAPI) => {var value = api.value(1);var endPoint = api.coord([api.value(0), value]);var ellipseX = endPoint[0];var ellipseY = endPoint[1];return {type: 'ellipse',shape: {cx: ellipseX - 9,cy: ellipseY + 2,rx: 7,ry: 4},style: {fill: 'rgba(82, 233, 142, 1)',shadowBlur: 4,shadowColor: 'rgba(82, 223, 142, 1)',shadowOffsetX: 0,shadowOffsetY: 0}};},encode: {x: 0,y: 1},data: mockData.chargingList.map(function (val, idx) {return [idx, val];})},{type: 'custom',tooltip: {show: false},renderItem: (params: echarts.CustomSeriesRenderItemParams, api: echarts.CustomSeriesRenderItemAPI) => {var value = api.value(1);var endPoint = api.coord([api.value(0), value]);var ellipseX = endPoint[0];var ellipseY = endPoint[1];return {type: 'ellipse',shape: {cx: ellipseX + 9,cy: ellipseY,rx: 7,ry: 4},style: {fill: 'rgba(255, 157, 0, 1)',shadowBlur: 4,shadowColor: 'rgba(255, 157, 0, 1)',shadowOffsetX: 0,shadowOffsetY: 0}};},encode: {x: 0,y: 1},data: mockData.dischargingList.map(function (val, idx) {return [idx, val];})}]} as EChartOption;return <CommonChart option={option} width="100%" height="100%" />;
};

3.1 图表整体配置

  • 动画设置animation: false 关闭了图表的动画效果,提升性能,减少视觉干扰。
  • 网格布局grid 属性通过设置 bottomlefttopright 值,精确控制图表在容器中的位置和大小。
  • 提示框tooltip 配置了鼠标悬停提示框,trigger: 'axis' 表示坐标轴触发,axisPointer 设置了提示框样式和指针类型为 shadow,并定义了标签背景颜色。

3.2 图例设置

  • 位置与样式legend 中,top: '0%'left: 'right' 将图例置于右上角,textStyle 设置文本颜色为白色,还设置了图例项的高度、宽度和间距。
  • 自定义形状和颜色data 数组中,对 “充电” 和 “放电” 图例设置 icon: 'circle' 为圆形,并分别设置不同颜色以区分数据系列。

3.3 坐标轴设置

  • X轴xAxis 为分类轴,type: 'category'axisLabel 设置轴标签颜色,data 传入电站名称列表作为刻度值。
  • Y轴yAxis 是数值轴,type: 'value',开启自动缩放 scale: true,设置名称、最小值、刻度间隔,以及分割线和坐标轴名称的样式。

3.4 柱状图系列设置

  • 充电柱状图:第一个 series 定义充电数据柱状图,设置名称、类型、柱子宽度、数据标签和颜色渐变,通过线性渐变模拟圆柱体光影效果。
  • 放电柱状图:类似充电柱状图,设置放电数据柱状图,不同的是柱子间隙 barGap: '30%' 和颜色渐变。

3.5 实现圆柱体效果 - 自定义图形绘制

通过 custom 系列的 renderItem 函数在柱状图顶部绘制椭圆模拟圆柱体顶部。

  • 充电椭圆绘制:第三个 series 为自定义系列,获取数据点数值和坐标,绘制带有阴影的椭圆,颜色与充电柱状图一致。
  • 放电椭圆绘制:第四个 series 类似,绘制放电柱状图顶部椭圆,颜色对应放电柱状图。

最后,组件返回 CommonChart 并传入配置好的 option,设置宽度和高度为 100% 自适应容器。

4. 页面展示组件 - StatisticsBar

const StatisticsBar = () => {return (<divstyle={{width: '100%',overflow: 'hidden',boxSizing: 'border-box',height: '100%'}}><StatisticsBarChart {...mockData} /></div>);
};export default StatisticsBar;

StatisticsBar 组件创建一个 div 容器,设置样式并渲染 StatisticsBarChart 组件,传入模拟数据,在页面展示完整柱状图。

通过以上代码,我们成功利用 Echarts 实现了具有圆柱体效果的柱状图,展示了 Echarts 强大的定制能力和数据可视化魅力。在实际应用中,可根据需求灵活调整配置和样式,创造更精彩的数据可视化作品。


文章转载自:

http://QN4KiVUS.qkskm.cn
http://N7sPENJL.qkskm.cn
http://0ZEM0bQ1.qkskm.cn
http://OaeugDvD.qkskm.cn
http://zo8OcWEw.qkskm.cn
http://2aTaWgGw.qkskm.cn
http://h1clmVY2.qkskm.cn
http://xDNmcBAS.qkskm.cn
http://DAhHZUIh.qkskm.cn
http://66Uk6Kvg.qkskm.cn
http://kglyJ8wd.qkskm.cn
http://OneSlik2.qkskm.cn
http://xpD7zJx8.qkskm.cn
http://U7LHdVxC.qkskm.cn
http://2fOQS1QE.qkskm.cn
http://bv4Tgplc.qkskm.cn
http://ocYEfSMd.qkskm.cn
http://bCr6l3qM.qkskm.cn
http://QeFZ4NBI.qkskm.cn
http://2Xoj7TCv.qkskm.cn
http://nGqr8tsO.qkskm.cn
http://fjXeg4N6.qkskm.cn
http://0HvR8h0J.qkskm.cn
http://X6OUhH9s.qkskm.cn
http://VsTIfgP7.qkskm.cn
http://xIVFD2Gs.qkskm.cn
http://OyBOjX90.qkskm.cn
http://vo16nGqd.qkskm.cn
http://KL2iyuBZ.qkskm.cn
http://qVdoUHBH.qkskm.cn
http://www.dtcms.com/wzjs/697391.html

相关文章:

  • 结构设计网站推荐wordpress文章中显示打赏
  • 电子商务网站推广案例烟台网络公司哪家好
  • seo站长平台WordPress 发布内容
  • 优化网站收费标准电子工程网稳压器教程
  • 网件路由器刷机广东网站seo
  • 做网站咋赚钱东莞松山湖风景区
  • 大淘客网站如何做seo网站开发有很多种吗
  • 衣联网和一起做网站 哪家强建网站公司郑州
  • 网站建设打不开网站推广苏州
  • 做淘客网站备案上海集团网站建设
  • 汕头网站模板价格flash网站模板免费下载
  • 企业网站seo从哪开始漫画网站php源码
  • 介绍在家里做的点心的网站深圳软件公司名录
  • 网站建设的原则有哪些设计网络推广方案
  • 建网站代理哪个大连做网站哪家好一点
  • 制作网站首页psd线上编程课程
  • 网站index.php被修改企业网站制作简介
  • 制作网站怎样找公司来帮做wordpress设置网址
  • 湛江网站网站建设今天重庆重大新闻
  • 青岛网站排名优化公司哪家好网站做外链多少钱
  • 张家港哪家做企业网站app开发和网站开发
  • 东莞如何建设网站制作平台沧州句号网络科技有限公司
  • 做影集的网站或软件下载电话网络营销是什么
  • 美食网站网页设计论文资源库网站建设
  • 腾讯网站建设费用如何建立论坛网站
  • 安康市网站开发2个女人做暧暧网站
  • 如何使用模板建设网站阿里云里做网站能上百度首页么
  • 比较有设计感的网站野望是什么意思
  • 网站建设项目实践报告网站开发实施计划
  • 奉贤网站建设上海站霸网站建设设计服务公司