极致呈现系列之:Echarts柱状图的创意设计与数字美学的完美平衡

news2025/2/14 2:50:56

先看下最终效果
在这里插入图片描述

目录

  • 数字之美:Echarts柱状图的基础应用
  • 形色俱佳:Echarts柱状图的样式美化与创意设计
  • 独具匠心:Echarts柱状图的柱体形状自定义
  • 动感十足:Echarts柱状图的交互动画实现
  • 数字排序的艺术:Echarts柱状图的数据排序技巧

前面我花了两篇博客的时间详细介绍了如何在 Vue3中使用Echarts图表和 Echarts中的配置项的详细介绍,这一篇博客我想结合前面两篇博客的内容,来实现对Echarts柱状图的美化与数据交互。

数字之美:Echarts柱状图的基础应用

前面我们已经将过了,要在Vue中使用Echarts,我们必须先安装和引入,我们新建一个vue3工程,安装Echarts并引入

  1. 安装Echarts
npm install echarts --save
  1. 引入Echarts,这里我就局部引入了,新建一个VueChart.vue组件,在这个组件中引入
import * as echarts from 'echarts';
  1. 在该组件的模板中新建一个div
<div ref="chart" style="width: 50%;height: 400px;"></div>
  1. 定义一个数组,用于存放数据
const chart = ref(null)
const data = [  
  { name: 'Mon', value: 820 },
  { name: 'Tue', value: 932 },
  { name: 'Wed', value: 901 },
  { name: 'Thu', value: 934 },
  { name: 'Fri', value: 1290 },
  { name: 'Sat', value: 1330 },
  { name: 'Sun', value: 1320 },
];
  1. 定义一个变量chart与div关联,并在onMounted中调用Echarts的init函数
onMounted(() => {
  const myChart = echarts.init(chart.value)
 // 配置项内容
})
  1. 定义变量option为一个数组,在里面配置我们想要在Echarts中显示的内容;这里我定义了title用于显示图表的标题,xAxis配置和显示x轴,yAxis配置和显示y轴,series配置系列;具体的配置参数请看上一篇博客
const option = {
  title: {
    text: '数字之美:Echarts柱状图的基础应用'
  },
  xAxis: {
    type: 'category',
    data: data.map(item=>item.name)
  },
  yAxis: {
    type: 'value'
  },
  series: [{
    data: data.map(item=>item.value),
    type: 'bar'
  }]
};
  1. 将上面定义的option作为参数传递给我们上面定义的Echarts实例—myChart
  2. 在App.vue中插入上面的VueChart组件
<template> 
  <VueChart></VueChart> 
</template>
<script setup>
import VueChart from './components/VueChart.vue'; 
</script>

一个简单的柱状图我们就实现了,运行看效果
在这里插入图片描述
但是这个柱状图看起来太单一了,不是很美观,下面我们来进一步的优化

形色俱佳:Echarts柱状图的样式美化与创意设计

先在我们来修改下柱体的颜色、边框、阴影、柱体宽度以及坐标轴线条的样式,我们只需要在option配置项中添加内容即可,代码如下:

const option = {
    title: {
      text: '形色俱佳:Echarts柱状图的样式美化与创意设计'
    },
    xAxis: {
      type: 'category',
      data: data.map(item=>item.name),
      axisLine: {
        lineStyle: {
          color: '#333'
        }
      }
    },
    yAxis: {
      type: 'value',
      axisLine: {
        lineStyle: {
          color: '#333'
        }
      }
    },
    series: [{
      data: data.map(item=>item.value),
      type: 'bar',
      barWidth: 20,
      itemStyle: {
        color:'#0286ff', 
        borderColor: '#fff',
        borderWidth: 2, 
        shadowBlur: 10,
        shadowColor: '#ccc'
      }, 
    }], 
  }

修改完成后,运行看效果
在这里插入图片描述
看起来比我们上面第一次的版本漂亮多了,但是还是不是很完美,柱体看起来太锐利了,颜色也比较单一

独具匠心:Echarts柱状图的柱体形状自定义

柱体是方形的,看起来比较锐利,颜色也太单一了,下面我们把柱体改为圆角的,同时颜色改为渐变色,代码如下:

const option = {
    title: {
      text: '独具匠心:Echarts柱状图的柱体形状自定义'
    },
    xAxis: {
      type: 'category',
      data: data.map(item=>item.name),
      axisLine: {
        lineStyle: {
          color: '#333'
        }
      }
    },
    yAxis: {
      type: 'value',
      axisLine: {
        lineStyle: {
          color: '#333'
        }
      }
    },
    series: [{
      data: data.map(item=>item.value),
      type: 'bar',
      barWidth: 20,
      itemStyle: { 
        color: new echarts.graphic.LinearGradient(
          0, 0, 0, 1, [{
            offset: 0,
            color: '#00feff'
          },
          {
            offset: 0.5,
            color: '#027eff'
          },
          {
            offset: 1,
            color: '#0286ff'
          }
        ]
        ),
        borderColor: '#fff',
        borderWidth: 2,
        borderRadius: 30,
        shadowBlur: 10,
        shadowColor: '#ccc'
      }, 
    }], 
  }

在这里插入图片描述
嗯,这样,柱状图的样式就比较完美了,下面我们来实现交互效果

动感十足:Echarts柱状图的交互动画实现

这里我们向实现三个交互效果,一是鼠标悬浮到柱体上时,柱体可以高亮;二是弹出提示框;三是增加一个数据缩放功能的dataZoom;代码如下

const option = {
    title: {
      text: '独具匠心:Echarts柱状图的柱体形状自定义'
    },
    xAxis: {
      type: 'category',
      data: data.map(item=>item.name),
      axisLine: {
        lineStyle: {
          color: '#333'
        }
      }
    },
    yAxis: {
      type: 'value',
      axisLine: {
        lineStyle: {
          color: '#333'
        }
      }
    },
    series: [{
      data: data.map(item=>item.value),
      type: 'bar',
      barWidth: 20,
      itemStyle: { 
        color: new echarts.graphic.LinearGradient(
          0, 0, 0, 1, [{
            offset: 0,
            color: '#00feff'
          },
          {
            offset: 0.5,
            color: '#027eff'
          },
          {
            offset: 1,
            color: '#0286ff'
          }
        ]
        ),
        borderColor: '#fff',
        borderWidth: 2,
        borderRadius: 30,
        shadowBlur: 10,
        shadowColor: '#ccc'
      },
      emphasis: {
        itemStyle: {
          color: '#409EFF'
        },

      },
    }],
    tooltip: {
      trigger: 'axis'
    },
    dataZoom: [
      {
        type: 'slider',
        start: 0,
        end: 100
      },
      {
        type: 'inside',
        start: 0,
        end: 100
      }
    ],
  }

刷新浏览器,看效果,
在这里插入图片描述
这个图表看起来就漂亮多了

数字排序的艺术:Echarts柱状图的数据排序技巧

下面我们实现Echarts图表的数据排序,要实现这个功能,其实只需要利用数组的sort函数就可以了:在我们定义的data数组下面添加如下代码:
升序排序:data.sort((a, b) => a.value - b.value);
在这里插入图片描述
降序排序:data.sort((a, b) => b.value - a.value);
在这里插入图片描述
好了,关于柱状图的使用技巧就说道这里,其实Echarts可实现的功能远远不止这些,我们还可以在这基础上进行更多的变化和使用,比如样式修改为仿三维柱状图、进度条形式的柱体等,有兴趣的小伙伴可以研究下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/645376.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《机器学习公式推导与代码实现》-chapter7决策树

《机器学习公式推导与代码实现》学习笔记&#xff0c;记录一下自己的学习过程&#xff0c;详细的内容请大家购买作者的书籍查阅。 决策树 决策树&#xff08;decision tree&#xff09;基于特征对数据实例按照条件不断进行划分&#xff0c;最终达到分类或回归的目的。 本章作…

React中几种编写弹窗的方式

方式一:按钮与弹窗封装成一个组件 将按钮和弹窗封装成一个组件&#xff0c;可以大大提高 React 代码的可重用性、可维护性和可扩展性。以下是示例代码&#xff1a; import React, { useState } from "react"; import { Button, Modal } from "antd";const …

django中的请求和响应

目录 请求和响应定义请求请求的样子案例常见的请求方法 django中的请求HttpRequest 常见属性 django的响应响应的内容content响应的状态码响应类型content-type常见的响应对象 请求和响应定义 请求 请求的样子案例 常见的请求方法 HTTP&#xff08;超文本传输协议&#xff09…

中国市场成为高阶智驾战略高地,博世/安波福包揽四项大奖

高工智能汽车研究院监测数据显示&#xff0c;2022年度中国市场&#xff08;不含进出口&#xff09;乘用车前装标配搭载辅助驾驶&#xff08;L0-L2&#xff09;交付1001.22万辆&#xff0c;首次突破千万辆规模&#xff0c;同时&#xff0c;前装搭载率也首次突破50%大关。 此外&a…

【数据分享】1901-2021年1km分辨率逐月总降水栅格数据(全国/分省/免费获取)

气象指标在日常研究中非常常用&#xff0c;之前我们给大家分享过来源于国家青藏高原科学数据中心提供的1901-2021年1km分辨率逐月平均气温栅格数据和1901-2021年1km分辨率的逐月最高气温栅格数据&#xff08;可查看之前的文章获悉详情&#xff09;&#xff01; 本次我们继续分…

建造者模式(八)

不管怎么样&#xff0c;都要继续充满着希望 上一章简单介绍了原型模式(七), 如果没有看过, 请观看上一章 一. 建造者模式 引用 菜鸟教程里面的建造者模式介绍: https://www.runoob.com/design-pattern/builder-pattern.html 建造者模式&#xff08;Builder Pattern&#xff…

企业自动化解决方案 - RPA

下方查看历史精选文章 重磅发布 - 自动化框架基础指南pdfv1.1大数据测试过程、策略及挑战 测试框架原理&#xff0c;构建成功的基石 在自动化测试工作之前&#xff0c;你应该知道的10条建议 在自动化测试中&#xff0c;重要的不是工具 什么是RPA&#xff1f; RPA指的是机器人流…

手势识别系统Python,基于卷积神经网络算法

一、介绍 手势识别系统&#xff0c;使用Python作为主要开发语言&#xff0c;基于深度学习TensorFlow框架&#xff0c;搭建卷积神经网络算法。并通过对数据集进行训练&#xff0c;最后得到一个识别精度较高的模型。并基于Django框架&#xff0c;开发网页端操作平台&#xff0c;…

Elasticsearch:数据摄取中的使用指南

数据摄取是利用 Elasticsearch 的全部潜力进行高效搜索和分析的关键步骤。 在本文中&#xff0c;我们将探讨几个常用的基本实践&#xff0c;以确保将无缝且有效的数据摄取到 Elasticsearch 中。 通过遵循这些指南&#xff0c;你可以优化数据摄取流程&#xff0c;并在你的部署中…

还在为618电商推送方案烦恼?我们帮你做好了!

618是每年重要的电商大促活动&#xff0c;热度高流量大&#xff0c;是电商App吸引新用户&#xff0c;提高用户转化率(购买率)的最好时机。对电商App运营来说&#xff0c;消息推送是不可忽略的流量来源之一&#xff0c;适当的消息推送可以召回用户&#xff0c;提高用户复购率。如…

Tigers Global Logistics EDI 需求及SaaS解决方案

Tigers Global Logistics 是一家国际物流公司&#xff0c;总部位于香港&#xff0c;成立于1998年。该公司提供全球物流服务&#xff0c;包括仓储、运输、海关通关、电商物流等。Tigers Global Logistics 在全球范围内拥有超过70个仓库和物流中心&#xff0c;并在美国、欧洲、亚…

Spring MVC入门笔记

Spring MVC基础知识 1. 创建web应用 新建Maven项目 点击File -> Project Structure -> Facets -> 号 -> Web 修改文件描述符路径为硬盘:\项目名\src\main\存储页面的文件夹&#xff08;如&#xff1a;webapp&#xff09;\WEB-INF\web.xml 修改Web页面路径为硬盘…

领域建模之数据模型设计方法论

本文通过实际业务需求场景建模案例&#xff0c;为读者提供一种业务模型向数据模型设计的方法论&#xff0c;用于指导实际开发中如何进行业务模型向数据模型转化抽象&#xff0c;并对设计的数据模型可用性、扩展性提供了建议性思考。通过文章&#xff0c;读者可以收获到业务模型…

打造高效采购系统,提升企业采购效率

随着市场竞争的日益激烈&#xff0c;企业采购效率的重要性越来越凸显。采购系统作为企业采购的核心环节&#xff0c;是提升采购效率的关键。因此&#xff0c;打造高效采购系统是企业发展的必要条件。本文将围绕打造高效采购系统&#xff0c;提升企业采购效率展开讨论。 一、采购…

JavaWeb小项目——【源码】使用Vue+axios+Servlet+Lombok+JDBC+MySQL技术栈实现云笔记管理系统案例的开发

目录 引出小项目要求固定的东西1.pom.xml文件配置 web.xml文件配置2.util里面JDBC的DBUtils 字符串工具StringUtils3.entity里面的PageInfo分页实体类ResData响应标准格式4.filter里面的编码CharacterEncodingFilter和权限LoginAuthorFilter5.前端固定的js包和bootstrap包 小…

深入剖析mmap原理 - 从三个关键问题说起

作者&#xff1a;招财二师兄 链接&#xff1a;https://www.jianshu.com/p/eece39beee20 来源&#xff1a;简书 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 对于mmap&#xff0c;您是否能从原理上解析以下三个问题&#xff1a; 1&#…

CentOS阿里镜像源

阿里CentOS镜像源位置&#xff1a;http://mirrors.aliyun.com/centos/?spma2c6h.25603864.0.0.50d03715CS95s4 CentOS下载最小位置&#xff1a; https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/?spma2c6h.25603864.0.0.5e38f5advNCSXC 如图&#xff1a;

用敏捷工具Leangoo领歌做敏捷需求管理

传统的瀑布工作模式使用详细的需求说明书来表达需求&#xff0c;需求人员负责做需求调研&#xff0c;根据调研情况编制详细的需求说明书&#xff0c;进行需求评审&#xff0c;评审之后签字确认交给研发团队设计开发。在这样的环境下&#xff0c;需求文档是信息传递的主体&#…

vue H5项目如何在PC端时居中展示,而不全屏拉伸

目录 1、场景再现&#xff1a;在PC端时 H5项目布局被拉伸2、代码实现3、最终效果图4、疑惑 1、场景再现&#xff1a;在PC端时 H5项目布局被拉伸 2、代码实现 在App.vue中的写入&#xff0c;vue2 的在mounted中写入&#xff0c;vue3的写在onMounted写入。 逻辑讲解&#xff1a…

Linux之进程掩码 umask

目录 Linux之进程掩码 umask 最大权限 umask unmask作用 语法格式 参数及作用 umask存放位置 案例 示例1 --- 在shell进程中创建文件 示例2 --- 修改shell umask值&#xff08;临时&#xff09; 示例3 --- 修改shell umask值&#xff08;永久&#xff09; 示例4 ---…