echarts5.0 动态柱状图 不用调接口 不用jQuery舒适应用

在这里插入图片描述
*代码展示 数据动态增加 *
这是echarts5.0的新增的图表 主要的动态排序属性是 series 里的 realtimeSort: true, 所以 很重要的一点事在项目引入的时候 必须 引入echarts5 npm i echarts@5.0.2 这很重要
在这里插入图片描述
在main.js引入 **注意 ** 引入的话 要这样写 和echarts4 不一样 很关键

//引入echarts
import * as echarts from 'echarts'
Vue.prototype.$echarts = echarts

在echarts官网 他是通过jquery调取线上接口的 我这边做的是吧数据放在本地 下面是代码展示

<template>
  <div class="cars-data-groupper">
   <div class="top">
    <div id="container" style="height:700px ;width:100%;"></div>
  </div>
</template>

<script>
import echartsData from './data.js'
export default {
  name: '',
  data() {
    return {};
  },
  mounted() {
     this.getCharts();
  },
  methods: {
    getCharts() {
      var chartDom = document.getElementById('container');
      var myChart = this.$echarts.init(chartDom);
      var option;
      var updateFrequency = 2000;
      var dimension = 0;
      var countryColors = {
        中国: '#FF5E4F',
        加拿大: '#45AD94',
        日本: '#4D57FF',
        西班牙: '#969498',
        俄罗斯: '#45ACEC',
        法国: '#A7AA62',
        意大利: '#EC9795',
        印度: '#DE9E75',
        墨西哥: '#C49E60',
        美国: '#47984B',
        英国: '#DD9CD1',
        澳大利亚: '#92B668',
        韩国: '#B2A6EC',
        巴西: '#44AFBD',
        德国: '#89ADF1'
      };

      var data = echartsData.dats;
      var flags = echartsData.fonts;

      var years = [];
      for (var i = 0; i < data.length; ++i) {
        if (years.length === 0 || years[years.length - 1] !== data[i][4]) {
          years.push(data[i][4]);
        }
      }
      function getFlag(countryName) {
        if (!countryName) {
          return '';
        }
        return (
          flags.find(function(item) {
            return item.name === countryName;
          }) || {}
        ).emoji;
      }

      var startIndex = 1;
      var startYear = years[startIndex];

      var option = {
        title: {
          left: 'center',
          text: '2005-2020全球汽车销量总榜',
          textStyle: {
            fontSize: 30,
            "color": "#ffffff"
          }
        },
        grid: {
          top: 50,
          bottom: 30,
          left: 150,
          right: 150
        },
        xAxis: {
          max: 'dataMax',
          label: {
            formatter: function(n) {
              return Math.round(n);
            }
          },
          axisLine:{
              lineStyle:{
              color:'#ffffff',
              }
          },
        },
        dataset: {
          source: data.slice(1).filter(function(d) {
            return d[4] === startYear;
          })
        },
        yAxis: {
          type: 'category',
          inverse: true,
          max: 14,
          axisLine:{
              lineStyle:{
              color:'#ffffff',
              }
          },
          axisLabel: {
            show: true,
            textStyle: {
              fontSize: 15,
            },

            formatter: function(value) {
              return value + '{flag|' + getFlag(value) + '}';
            },
            rich: {
              flag: {
                fontSize: 25,
                padding: 5,
                align: 'center'
              }
            }
          },
          animationDuration: 300,
          animationDurationUpdate: 300
        },
        series: [
          {
            realtimeSort: true,
            seriesLayoutBy: 'column',
            type: 'bar',
            itemStyle: {
              color: function(param) {
                return countryColors[param.value[3]] || '#5470c6';
              }
            },
            encode: {
              x: dimension,
              y: 3
            },
            label: {
              formatter: function(value) {
                return Math.ceil(value.value[0]) + '辆';
              },
              textStyle: {
                fontSize: 16,
                color:'#fff',
              },
              show: true,
              precision: 1,
              position: 'right',
              valueAnimation: true,
            }
          }
        ],
        // Disable init animation.
        animationDuration: 0,
        animationDurationUpdate: updateFrequency,
        animationEasing: 'linear',
        animationEasingUpdate: 'linear',
        graphic: {
          elements: [
            {
              type: 'text',
              right: 160,
              bottom: 60,
              style: {
                text: startYear,
                font: 'bolder 80px monospace',
                fill: '#fff'
              },
              z: 100
            }
          ]
        }
      };

      // console.log(option);
      myChart.setOption(option);

      for (var i = startIndex; i < years.length - 1; ++i) {
        (function(i) {
          setTimeout(function() {
            updateYear(years[i + 1]);
          }, (i - startIndex) * updateFrequency);
        })(i);
      }

      function updateYear(year) {
        var source = data.slice(1).filter(function(d) {
          return d[4] === year;
        });
        option.series[0].data = source;
        option.graphic.elements[0].style.text = year;
        myChart.setOption(option);
      }

      option && myChart.setOption(option);
    }
  }
};
</script>

<style   lang="less">
  .cars-data-groupper {
    .top {
      margin: 0 auto 20px;
      padding-top: 25px;
      font-size: 30px;
      text-align: center;
      .img-logo {
        vertical-align: middle;
        width: 50px;
        height: 50px;
      }
    }
  }

</style>

下面是我自己定义的数据 大家自己可以修改

var dats = [
  ["Income", "Life Expectancy", "Population", "Country", "Year"],
  [5758189, 68.8378, 8417640, "中国", 2005],
  [1630142, 68.519, 14099994, "加拿大", 2005],
  [5852034, 40.936264, 558820362, "日本", 2005],
  [1959488, 60.18618, 6051290, "西班牙", 2005],
  [1806625, 65.5708, 4049689, "俄罗斯", 2005],
  [2598183, 66.3308, 42071027, "法国", 2005],
  [2495436, 67.18742266, 70111671, "意大利", 2005],
  [1440455, 71.0438, 144928, "印度", 2005],
  [1168508, 34.95868, 382231042, "墨西哥", 2005],
  [17444329, 23.12128, 10248496, "美国", 2005],
  [2828127, 40.88998, 19304737, "英国", 2005],
  [988269, 69.2654, 1947802, "澳大利亚", 2005],
  [1145230, 59.7336, 25264029, "韩国", 2005],
  [1714644, 57.5768, 104306354, "巴西", 2005],
  [3614886, 68.0836, 159880756, "德国", 2005],

  [5758189, 68.8378, 8417640, "中国", 2006],
  [1630142, 68.519, 14099994, "加拿大", 2006],
  [5852034, 40.936264, 558820362, "日本", 2006],
  [1959488, 60.18618, 6051290, "西班牙", 2006],
  [1806625, 65.5708, 4049689, "俄罗斯", 2006],
  [2598183, 66.3308, 42071027, "法国", 2006],
  [2495436, 67.18742266, 70111671, "意大利", 2006],
  [1440455, 71.0438, 144928, "印度", 2006],
  [1168508, 34.95868, 382231042, "墨西哥", 2006],
  [17444329, 23.12128, 10248496, "美国", 2006],
  [2828127, 40.88998, 19304737, "英国", 2006],
  [988269, 69.2654, 1947802, "澳大利亚", 2006],
  [1145230, 59.7336, 25264029, "韩国", 2006],
  [1714644, 57.5768, 104306354, "巴西", 2006],
  [3614886, 68.0836, 159880756, "德国", 2006],

  [8802549, 69.8254, 8821938, "中国", 2007],
  [1690030, 69.097, 14882050, "加拿大", 2007],
  [5304953, 42.809992, 580886559, "日本", 2007],
  [1928507, 61.46974, 6304524, "西班牙", 2007],
  [2904100, 66.5044, 4142353, "俄罗斯", 2007],
  [2628917, 67.5644, 42724452, "法国", 2007],
  [2770528, 67.82125638, 70720721, "意大利", 2007],
  [1993522, 72.3034, 150779, "印度", 2007],
  [1149377, 36.30024, 395137696, "墨西哥", 2007],
  [16404794, 27.87104, 9957244, "美国", 2007],
  [2793737, 45.41514, 19979069, "英国", 2007],
  [1049274, 70.3522, 2040015, "澳大利亚", 2007],
  [1278015, 62.0038, 26236679, "韩国", 2007],
  [2469420, 58.7624, 107729541, "巴西", 2007],
  [3481208, 68.6448, 164941716, "德国", 2007],

];

var fonts = [
  { emoji: "🇨🇳", name: "中国" },
  { emoji: "🇨🇦", name: "加拿大" },
  { emoji: "🇯🇵", name: "日本" },
  { emoji: "🇪🇸", name: "西班牙" },
  { emoji: "🇷🇺", name: "俄罗斯" },
  { emoji: "🇫🇷", name: "法国" },
  { emoji: "🇮🇹", name: "意大利" },
  { emoji: "🇮🇳", name: "印度" },
  { emoji: "🇲🇽", name: "墨西哥" },
  { emoji: "🇺🇸", name: "美国" },
  { emoji: "🇬🇧", name: "英国" },
  { emoji: "🇦🇺", name: "澳大利亚" },
  { emoji: "🇰🇷", name: "韩国" },
  { emoji: "🇧🇷", name: "巴西" },
  { emoji: "🇩🇪", name: "德国" },
];

module.exports = {dats,fonts};

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Vue 3.0 和 ECharts 5.0 是两个非常流行的前端框架和可视化库。Vue 3.0 于 2020 年正式发布,是 Vue.js 的最新版本。而 ECharts 5.0 则在 2020 年 12 月发布了正式版,是一款强大的可视化库。 Vue 3.0 带来了许多重大更新和改进,包括更好的性能、更好的开发体验、更好的 TypeScript 支持等。Vue 3.0 让开发人员能够更快地构建高性能的 Web 应用程序,同时也提供了更完善的生态系统,使得开发过程更加便捷和高效。 ECharts 5.0 是一款强大的可视化库,它提供了多种类型的图表、地图、关系图等,使得开发人员能够快速创建出精美的可视化效果。ECharts 5.0 支持多种数据格式,包括 JSON、CSV、XML 等,同时也支持多种数据源,包括静态数据、API 接口、WebSocket 等。ECharts 5.0 还提供了丰富的图表配置选项,使得开发人员能够轻松地定制各种流行的数据可视化效果。 Vue 3.0 与 ECharts 5.0 的结合,可以实现更加高效和优秀的数据可视化效果。Vue 3.0 的性能优化可以让 ECharts 5.0 更好地展示大量数据,同时 ECharts 5.0 的丰富图表类型和选项,可以为 Vue 3.0 应用程序提供更加精细的数据呈现。 总的来说,Vue 3.0 和 ECharts 5.0 是两个非常优秀的前端框架和可视化库,它们的结合能够为开发人员提供更加高效、精细和出色的 Web 应用程序开发体验。 ### 回答2: Vue 3.0和Echarts 5.0是目前前端开发中非常流行的框架和库,分别用于开发Web页面和数据可视化。Vue 3.0是Vue.js框架的最新版本,与先前版本相比有许多改进,例如更好的性能、更直接的响应式系统、更好的TypeScript支持等。Echarts 5.0是Apache开源项目Echarts的最新版本,它是一个基于JavaScript的可视化库,可以用来制作各种类型的图表,如折线图、柱状图、饼图、散点图等。 Vue.jsEcharts可以非常好地结合使用。Vue.js可以帮助我们组织代码,将数据绑定到HTML标记中,处理事件和生命周期等。而Echarts可以让我们非常方便地制作图表并将其展示在页面上。Vue.js的响应式数据和组件化的思想也与Echarts的数据驱动原则非常契合,两者可以无缝对接。 在使用Vue.jsEcharts时,我们可以通过Vue.js的组件化特性将Echarts作为Vue.js组件来实现。这样可以让我们在Vue.js中直接使用Echarts,而不需要手动编写JavaScript代码。另外,在Vue.js 3.0中,通过Composition API的支持,我们可以更加灵活地组织代码和处理数据,这也对于Echarts的使用提供了更多方便。 总之,Vue 3.0和Echarts 5.0是非常强大的前端开发工具,它们可以帮助我们快速地构建高性能的Web页面和数据可视化。在Vue.jsEcharts的结合使用中,可以通过组件化、响应式数据等特性实现代码的高效组织和数据的快速展示。 ### 回答3: Vue 3.0和Echarts 5.0是现在很火热的前端框架和可视化工具,在开发和设计方面都有很大的用途。 Vue 3.0具有更快的速度和更小的代码体积,采用了全新的响应式API和Composition API,这使得开发更加灵活方便。与此同时,Echarts 5.0则支持更多的图表类型,具有更好的性能和更多的交互功能。它也增加了更多的自定义选项,允许用户按照自己的需要进行整和设计。 Vue 3.0和Echarts 5.0的结合可以为开发者们提供更强大的可视化工具,从而可以更好地呈现数据和交互,同时也可以加速开发过程,减少代码量和时间成本。通过使用Vue 3.0和Echarts 5.0,开发者们可以快速地创建功能强大、适应性强的大型应用程序,并实现自己的数据可视化目标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值