实现Echarts词云和随机颜色(vue2)

2023-11-03

1.首先需要安装echarts和echarts-wordcloud插件;

2.echarts的版本和echarts-wordcloud版本有对应要求才能实现,否则会报错:经过查询如果是用的是echarts4那么需要对应着echarts-wordcloud1.x版本,echarts5对应着echarts-wordcloud2.x版本;

3.经实验后我是用的是下面的版本,可以保证我的页面正常使用其他各种样式的图表和词云:

 "echarts": "4.5.0",
 "echarts-wordcloud": "1.1.3",

以下是词云组件的实现代码:

<template>
  <div class="content-box">
    <div ref="keyWords" style="height: 300px"></div>
  </div>
</template>
<script>
import 'echarts-wordcloud'
export default {
  data() {
    return {
      words: [
        {
          name: 'web',
          value: 84
        },
        {
          name: 'GIT',
          value: 5
        },
        {
          name: 'CSS',
          value: 22
        },
        {
          name: 'CSS',
          value: 11
        },
        {
          name: '前端',
          value: 101
        },
        {
          name: 'CSS',
          value: 33
        },
        {
          name: 'Vue',
          value: 77
        },
        {
          name: 'js',
          value: 98
        },

        {
          name: '互联网',
          value: 66
        },
        {
          name: '插件',
          value: 55
        },
        {
          name: 'UI',
          value: 44
        },
        {
          name: 'GIT',
          value: 5
        },
        {
          name: 'CSS',
          value: 22
        },
        {
          name: 'CSS',
          value: 11
        },
        {
          name: 'CSS',
          value: 33
        }
      ]
    }
  },
  mounted() {
    this.$nextTick(() => {
      this.initEchart()
    })
  },
  methods: {
    initEchart() {
      //获取DOM节点并初始化
      const el = this.$refs.keyWords
      const echarts = require('echarts')
      const myChart = echarts.init(el)
      //按照colorList指定颜色的数据进行随机
      const colorList = ['#f89b6299', '#afcf7cde', '#fece5b']
      const option = {
        tooltip: {
          show: true
        },
        series: [
          {
            //用来调整词之间的距离
            gridSize: 20,
            //用来调整字的大小范围
            sizeRange: [18, 40],
            //用来调整词的旋转方向,,[0,0]--代表着没有角度,也就是词为水平方向
            rotationRange: [0, 0],
            type: 'wordCloud',
            size: ['95%', '95%'],
            textRotation: [0, 90],
            textPadding: 0,
            autoSize: {
              enable: true,
              minSize: 14
            },
            textStyle: {
              normal: {
                color: function() {
                  let index = Math.floor(Math.random() * colorList.length)
                  return colorList[index]
                }
              }
            },
            data: this.words
          }
        ]
      }
      //设置图表的参数
      myChart.setOption(option)
    }
  }
}
</script>

实现的效果如下图:
词云实现效果图
以上例子设置的是按照指定颜色进行随机。如果没有指定,颜色完全随机展示可以使用以下代码:

 normal: {
  color: function() {
    return `rgb(${[
      Math.round(Math.random() * 200 + 55),
      Math.round(Math.random() * 200 + 55),
      Math.round(Math.random() * 200 + 55)
    ].join(',')})`
  }
}

实现效果如图:
颜色完全随机词云
有时需要将词云的颜色按照数据的大小显示深浅程度,实现思路是需要将数据先按照数据进行由大到小的排序,并渲染排序后的数据:

const data = this.words.sort(function(a, b) {
        return b.value - a.value
      })

然后我们将设置颜色函数内的回调参数输出一下看看:

normal: {
  color: (v) => {
     console.log(v)
   }
 }

能看到有个dataIndex属性:
颜色函数的回调参数
利用这个属性,我们可以设置指定排序区间段的颜色,代码如下:

normal: {
  color: (v) => {
    switch (true) {
      case v.dataIndex <= 5:
        return '#da6b0b'
      case 5 < v.dataIndex && v.dataIndex <= 10:
        return '#ec9043b8'
      default:
        return '#f7af736e'
    }
  }
}

最终展示效果:
词云根据数值显示颜色深浅

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实现Echarts词云和随机颜色(vue2) 的相关文章

随机推荐

  • 发布一个开源的新闻api(整理后就开源)

    目录 说明 基础说明 其他说明 通用接口 登录 注册 更改密码 需要token 更换头像 需要token 获取用户列表 需要token 上传文件 5000端口 获取文件 5000端口 源码文件 db文件均不能获取 验证token 需要tok
  • Java技术——内部类

    内部类 inner class 定义 在一个类中定义另外一个类 这个类就叫做内部类 优点 内部类可以让我们将逻辑上相关的一组类组织起来 并由外部类来控制内部类的可见性 当我们建立一个内部类时 其对象 就拥有了与外部类对象 之间的一种关系 这
  • pid算法C语言实现

    理论我就不多说了 网都已经很多了 但能直接看到效果的确不多 这里我就提供一个 语言实现的可以看到效果的实际例程 pid h ifndef PID H define PID H typedef struct pid int error las
  • [1023]fastText文本分类算法

    文章目录 简介 模型架构 分层 softmax Hierarchical softmax N grams 特征 使用 fastText 运行速度快的原因 fasttext参数 github https github com facebook
  • 如何利用《新概念英语》练习听力?

    新概念英语 是很好的教材 如何将它变成优秀的听力材料呢 第一步 不要看书 将整篇课文听写下来 如果有的词听不出来 猜测该词应该是什么 实在听不出来就不勉强 随着听写的增多 听力会逐渐增强 在听的过程中 也可加深对英语发音的认识 而且实践证明
  • 【论文翻译-2】BiO-Net: Learning Recurrent Bi-directional Connections for Encoder-Decoder Architecture

    BiO Net Learning Recurrent Bi directional Connections for Encoder Decoder Architecture 源自 MICCAI2020 Medical Image Compu
  • Apache logs目录下找不到access_log文件

    目录 一 实验 1 Apache logs目录下找不到access log文件 一 实验 1 Apache logs目录下找不到access log文件 1 问题 apache服务器logs目录下 没有access log文件 2 解决方法
  • Python学习笔记之几点代码格式要求

    1 缩进 通常我们都是用Tab制表符进行代码缩进 但是标准来说是要用4个空格进行缩进 如果代码工具可以设置按Tab自动转换为4个空格 那就设置一下吧 想想之前写的代码没有用4个空格 代码规范很重要 在需要缩进的地方都使用四个空格 可提高可读
  • 【LSTM分类】基于注意力机制的卷积神经网络结合长短记忆神经网络CNN-LSTM-attention实现数据分类附matlab代码

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 更多Matlab仿真内容点击 智能优化算法 神经网络预测 雷达通信 无线传感器 电力系统 信号
  • 爬虫手册04 Splash的使用

    Splash的使用 目标 作为Selenium的备选方案 加载js渲染后的浏览器数据 安装方法 https blog csdn net weixin 40743639 article details 122833394 spm 1001 2
  • 《英语(二)》作文案例

    翻译文章 1 More than twenty years ago my hometown was just a small old and poor town Most of people were farmers There were
  • GLES3.0中文API-glGetQueryObjectuiv

    名称 glGetQueryObjectuiv 返回查询对象的参数 C规格 void glGetQueryObjectuiv GLuint id GLenum pname GLuint params 参数 id 指定查询对象的名称 pname
  • js逆向解析,js爬虫

    废话不多说 直接开干 吸取了百度精华 来写文章了 难度系数 两颗星 大概逻辑 1 请求url 2 找到请求参数 3 分析参数产生过程 4 整合参数 1 请求url http fanyi youdao com 2 找到请求参数 3 分析参数产
  • SQL中的循环、for循环、游标

    SQL中的循环 for循环 游标 1 利用游标循环更新 删除MemberAccount表中的数据 DECLARE My Cursor CURSOR 定义游标 FOR SELECT FROM dbo MemberAccount 查出需要的集合
  • K8S的概念和基本应用

    学习视频 Kubernetes基本概念和应用 哔哩哔哩 bilibili 零 架构概览 master节点 管理调度集群资源 一般为多节点构成 可以是物理机 也可以是虚拟机 worker节点 资源的提供者 一般为多节点构成 可以是物理机 也可
  • 在vue项目当中实现对某个数据的复制vue-clipboard2

    在vue项目当中实现对某个数据的复制 运用插件是十分方便快捷的vue clipboard2 安装 npm install save vue clipboard2 main js import Vue from vue import VueC
  • 推荐-社交推荐相关

    总结 近时间矩阵分解 社交信息的融合模型 2018 模型性能 不同社交推荐方法在不同数据集中不同用户社交强度下的性能对比 研究难点与热点 数据稀疏性 社交关系的有效挖掘 社交噪声 可解释性社交推荐 可扩展型社交推荐模型与多源信息的融合 社交
  • Linux 面试常见(55题)

    TOC删除线格式 一 文件管理 目录操作 创建目录 mkdir mkdir命令可以创建一个新的目录 例如 在当前目录下创建一个名为 test 的目录 mkdir test 2 删除目录 rmdir rmdir命令可以删除一个空目录 例如 要
  • 结构体输入输出(c语言)

    include
  • 实现Echarts词云和随机颜色(vue2)

    1 首先需要安装echarts和echarts wordcloud插件 2 echarts的版本和echarts wordcloud版本有对应要求才能实现 否则会报错 经过查询如果是用的是echarts4那么需要对应着echarts wor