echarts-wordcloud:打造个性化词云库
前言
在当今信息爆炸的时代,如何从海量的文本数据中提取有用的信息成为了一项重要的任务。词云作为一种直观、易于理解的数据可视化方式,被广泛应用于文本分析和可视化领域。本文将介绍一种基于
echarts-wordcloud实现的词云库,通过其丰富的功能和灵活的定制性,帮助用户更好地探索和展示文本数据中的关键信息。
echarts-wordcloud 介绍
echarts-wordcloud 是一种基于 echarts 库实现的词云插件,用于生成和展示词云图。echarts 是一款由百度开发的优秀的数据可视化库,而 echarts-wordcloud 则是在 echarts 的基础上扩展而来的,专门用于处理和展示文本数据中的关键词。词云图是一种以词语频率为基础的可视化方式,通过将词语按照频率大小排列并以不同的字体大小、颜色等方式展示,直观地呈现出文本数据中的关键信息。echarts-wordcloud 提供了丰富的配置选项,可以根据用户的需求进行个性化定制,如调整词语的字体大小、颜色、布局方式等,以及添加交互功能,使用户能够更好地探索和分析文本数据。
一、安装
一共需要安装两个包,一个 echarts 基础包,另一个是 echarts-wordcloud。
npm install echarts
npm install echarts-wordcloud
 
二、基础使用
- 创建一个容器:在 
html中,创建一个<div>元素作为词云图的容器。给该元素指定一个唯一的id,以便后续操作; - 准备数据:准备一个包含词语和对应频率的数据集。你可以使用 
javaScript对象或从后端获取的数据,确保数据格式正确; - 初始化 
echarts实例:在javaScript代码中,使用echarts.init()方法初始化一个echarts实例,并将其绑定到词云图容器的id上; - 配置词云图选项:通过配置 
echarts的option对象,设置词云图的样式、布局和数据。在option对象中,使用series属性来定义词云图的系列类型为wordCloud,并设置相关的配置选项,如shape(词云形状)、sizeRange(词语字体大小范围)、rotationRange(词语旋转角度范围)等。 - 绑定数据:将准备好的词语和频率数据绑定到词云图的 
series属性中; - 渲染词云图:调用 
echarts实例的setOption()方法,将配置好的option对象传入,以渲染词云图; - 显示词云图:在页面中显示生成的词云图,你可以将词云图容器的样式进行调整,以适应你的需求。
 
完整代码
<template><div class="chartBox"><div id="wordChart" :style="{ width: '100%', height: '100%' }"></div></div>
</template>
<script>
import "echarts-wordcloud";
export default {mounted() {this.initEchart();},methods: {initEchart() {var myChart = this.$echarts.init(document.getElementById("wordChart"));let option = {series: [{type: "wordCloud", //类型是词云图shape: "circle", //词云图的形状为圆形keepAspect: false, //不保持词云图的纵横比//词云图的位置和大小left: "center",top: "center",width: "100%",height: "100%",right: null,bottom: null,sizeRange: [12, 50], //词云图中词语的字体大小范围,最小12px,最大60pxrotationRange: [-90, 90], //词云图中词语的旋转角度范围rotationStep: 45, //词云图中词语的旋转步长gridSize: 10, //词云图中词语的间距drawOutOfBound: false, //不绘制超出词云图范围的词语layoutAnimation: true, //开启布局动画//词云图中词语的样式textStyle: {fontWeight: "bold",color: function () {return ("rgb(" +[Math.round(Math.random() * 160),Math.round(Math.random() * 160),Math.round(Math.random() * 160),].join(",") +")");},},// 词云图中词语的高亮样式emphasis: {textStyle: {textShadowBlur: 2,textShadowColor: "orange",},},// 词云图中的数据,必须有name和value属性data: [{ name: "无人驾驶", value: 352 },{ name: "区块链", value: 214 },{ name: "云计算", value: 534 },{ name: "物联网", value: 134 },{ name: "虚拟现实", value: 534 },{ name: "增强现实", value: 542 },{ name: "人工智能", value: 242 },{ name: "机器学习", value: 42 },{ name: "深度学习", value: 435 },{ name: "自然语言处理", value: 124 },{ name: "计算机视觉", value: 654 },{ name: "神经网络", value: 232 },{ name: "数据挖掘", value: 324 },{ name: "语音识别", value: 453 },{ name: "图像识别", value: 124 },{ name: "聊天机器人", value: 453 },{ name: "智能家居", value: 233 },{ name: "人脸识别", value: 123 },{ name: "量子计算", value: 212 },{ name: "智能制造", value: 241 },{ name: "语义分割", value: 414 },{ name: "知识图谱", value: 564 },{ name: "增量学习", value: 755 },{ name: "多模态学习", value: 229 },{ name: "迁移学习", value: 233 },{ name: "生成对抗网络", value: 124 },{ name: "强化学习", value: 65 },{ name: "人机交互", value: 199 },{ name: "机器人技术", value: 299 },{ name: "智能音箱", value: 454 },{ name: "智能医疗", value: 365 },{ name: "异常检测", value: 360 },{ name: "时间序列预测", value: 187 },{ name: "推荐系统", value: 360 },{ name: "情感分析", value: 460 },{ name: "机器翻译", value: 480 },{ name: "语音合成", value: 488 },{ name: "人脸生成", value: 51 },{ name: "图像风格转换", value: 99 },{ name: "实例分割", value: 120 },{ name: "目标检测", value: 150 },],},],};myChart.setOption(option);window.addEventListener("resize", function () {myChart.resize();});},},
};
</script>
<style scoped>
.chartBox {width: 50%;height: 50vh;
}
</style>
 
实现效果

三、进阶使用
3.1 shape
特殊情况下,shape 属性也可以是一个函数,用于自定义词云图的形状。当我们需要创建一个非常特殊的形状时,可以使用这个函数来实现。
实例代码
shape: function shapeSquare(theta) {return Math.min(1 / Math.abs(Math.cos(theta)),1 / Math.abs(Math.sin(theta)));
},
 
在上面的示例代码中,shape 参数被定义为一个函数,函数名为 shapeSquare。这个函数接受一个参数 theta,表示角度。在函数内部,我们使用三角函数(余弦和正弦)来计算正方形的形状。具体来说,我们计算了余弦和正弦的绝对值的倒数,并使用 Math.min 方法来取其中较小的值。这样做的目的是确保正方形的边长不会超过 1。通过这个函数,我们可以根据给定的角度 theta 来计算正方形的形状。当 theta 的值接近 0 或 180 度时,余弦的绝对值会接近 1,而正弦的绝对值会接近 0,因此正方形的形状会更接近于宽度大于高度的长方形。当 theta 的值接近 90 或 270 度时,余弦的绝对值会接近 0,而正弦的绝对值会接近 1,因此正方形的形状会更接近于高度大于宽度的长方形。
实现效果
 
3.2 color
在 echarts-wordcloud 中,color 是用于配置词云图中词语的颜色的参数。它可以接受不同的取值,包括字符串和函数。
- 字符串:你可以直接指定一个颜色字符串,如 
red、#ff0000等,来设置所有词语的颜色为同一个固定值; - 函数:你可以定义一个函数来动态地设置每个词语的颜色。
 
字符串
textStyle: {color: "red",
},
 
实现效果
 
函数
color: function () {return ("rgb(" +[Math.round(Math.random() * 255),Math.round(Math.random() * 255),Math.round(Math.random() * 255),].join(",") +")");
},
 
实现效果
 
3.2 自定义背景图
在 echarts-wordcloud 中,maskImage 参数用于设置词云图的背景图。通过指定一个图片的 url 地址,你可以使用自定义的背景图来呈现词云图。以下是一个示例代码,展示如何使用 maskImage 参数来设置词云图的背景图:
initEchart() {var myChart = this.$echarts.init(document.getElementById("wordChart"));var maskImage = new Image();maskImage.src = "data:image/png;base64,";let option = {series: [{type: "wordCloud",shape: "circle",maskImage: maskImage,},],};myChart.setOption(option);window.addEventListener("resize", function () {myChart.resize();});
},
 
核心代码

实现效果

相关推荐
⭐ 玩转数据可视化,从入门到精通 Echarts
相关文章:
echarts-wordcloud:打造个性化词云库
前言 在当今信息爆炸的时代,如何从海量的文本数据中提取有用的信息成为了一项重要的任务。词云作为一种直观、易于理解的数据可视化方式,被广泛应用于文本分析和可视化领域。本文将介绍一种基于 echarts-wordcloud 实现的词云库,通过其丰富的…...
VMware虚拟机安装CentOS7.9 Oracle 11.2.0.4 RAC+单节点RAC ADG
目录 一、参考资料 二、RAC环境配置清单 1.主机环境 2.共享存储 3.IP地址 4.虚拟机 三、系统参数配置 1. 配置网卡 1.1 配置NAT网卡 1.2 配置HostOnly网卡 2. 修改主机名 3. 配置/etc/hosts 4. 关闭防火墙 5. 关闭Selinux 6. 配置内核参数 7. 配置grid、oracle…...
iOS 视图实现渐变色背景
需求 目的是要实现视图的自定义的渐变背景色,实现一个能够随时使用的工具。 实现讨论 在 iOS 中,如果设置视图单一的背景色,是很简单的。可是,如果要设置渐变的背景色,该怎么实现呢?其实也没有很是麻烦&…...
hive命令和参数
一.命令行模式 hive命令行 hive -H 查询hive的可用参数 hive -e "" 在hive命令中直接执行简单的sql语句 在hive命令中执行sql文件 hive -f 文件地址 在hive命令中新建hive变量 hive --hivevar mykey"myvalue" beeline命令行 先得启动hiveserver…...
『MySQL 实战 45 讲』22 - MySQL 有哪些“饮鸩止渴”提高性能的方法?
MySQL 有哪些“饮鸩止渴”提高性能的方法? 需求:业务高峰期,生产环境的 MySQL 压力太大,没法正常响应,需要短期内、临时性地提升一些性能 短连接风暴 短连接模式:执行很少的 SQL 语句就断开,…...
创建kset
1、kset介绍 2、相关结构体和api介绍 2.1 struct kset 2.2 kset_create_and_add kset_create_and_addkset_createkset_registerkobject_add_internalkobject_add_internal2.3 kset_unregister kset_unregisterkobject_delkobject_put3、实验操作 #include<linux/module.…...
实战:基于Java的大数据处理与分析平台
实战:基于Java的大数据处理与分析平台 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何利用Java构建高效的大数据处理与分析平台。…...
构建安全稳定的应用:Spring Security 实用指南
前言 在现代 Web 应用程序中,安全性是至关重要的一个方面。Spring Security 作为一个功能强大且广泛使用的安全框架,为 Java 应用程序提供了全面的安全解决方案。本文将深入介绍 Spring Security 的基本概念、核心功能以及如何在应用程序中使用它来实现…...
嵌入式STM32F103项目实例可以按照以下步骤进行构建和实现
嵌入式STM32F103项目实例可以按照以下步骤进行构建和实现: 1. 项目概述 目标:演示STM32F103开发板的基本功能,通过LED闪烁来实现。硬件需求:STM32F103开发板、LED灯、杜邦线、USB转串口模块(可选,用于调试…...
2024最新Stable Diffusion【插件篇】:SD提示词智能生成插件教程!
前言 今天我们介绍几款可以自动生成提示词的插件。所谓智能生成提示词,就是我们只需要输入非常少量的关键字,插件就会根据关键词提示信息帮助我们生成一系列关键字或者句子作为提示词。下面来和我一起看看吧。 一. SD智能提示词工具 之前的文章中和大…...
彻底学会Gradle插件版本和Gradle版本及对应关系
看完这篇,保你彻底学会Gradle插件版本和Gradle版本及对应关系,超详细超全的对应关系表 需要知道Gradle插件版本和Gradle版本的对应关系,其实就是需要知道Gradle插件版本对应所需的gradle最低版本,详细对应关系如下表格࿰…...
p2p、分布式,区块链笔记: 通过libp2p的Kademlia网络协议实现kv-store
Kademlia 网络协议 Kademlia 是一种分布式哈希表协议和算法,用于构建去中心化的对等网络,核心思想是通过分布式的网络结构来实现高效的数据查找和存储。在这个学习项目里,Kademlia 作为 libp2p 中的 NetworkBehaviour的组成。 以下这些函数或…...
ShareSDK iOS端如何实现小红书分享
下载SDK 请登陆官网 ,找到SDK下载,勾选需要的平台下载 导入SDK (1)离线导入将上述下载到的SDK,直接将整个SDK资源文件拖进项目里,如下图: 并且勾选以下3个选项 在点击Finish,…...
算法day1 两数之和 两数相加 冒泡排序 快速排序
两数之和 最简单的思维方式肯定是去凑两个数,两个数的和是目标值就ok。这里两遍for循环解决。 两数相加 敲了一晚上哈哈,结果超过int范围捏,难受捏。 public class Test2 {public static void main(String[] args) { // ListNode l1 …...
Rust监控可观测性
可观测性 在监控章节的引言中,我们提到了老板、前端、后端眼中的监控是各不相同的,那么有没有办法将监控模型进行抽象、统一呢? 来简单分析一下: 业务指标实时展示,这是一个指标型的数据( metric )手机 APP 上传的数…...
SVN 的忽略(Ignore)和递归(Recursively)以及忽略部分
SVN中忽略大家经常用到,但总是似懂非懂,下面就详细展开说明一下忽略如何设置。 两个忽略 通常设置忽略都是文件夹和里面的文件都忽略。 设置忽略我们通常只需要鼠标右键点击忽略就可以了,如图: 第一个忽略用的最多,…...
vue3开发过程中遇到的一些问题记录
问题: vue3在使用 defineProps、defineEmits、defineExpose 时不需要import,但是 eslint会报错error defineProps is not defined no-undef 解决方法: 安装 vue-eslint-parser 插件,在 .eslintrc.js 文件中添加配置 parser: vue-e…...
Jedis、Lettuce、RedisTemplate连接中间件
jedis就像jdbc一样,用于两个端直接的连接。 1.创建Spring项目 这里不过多赘述... 2.导入连接工具jedis 在pom文件中导入jedis的依赖。 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version&…...
【C++】继承(详解)
前言:今天我们正式的步入C进阶内容的学习了,当然了既然是进阶意味着学习难度的不断提升,各位一起努力呐。 💖 博主CSDN主页:卫卫卫的个人主页 💞 👉 专栏分类:高质量C学习 👈 &#…...
网络io与select,poll,epoll
前言 网络 IO,会涉及到两个系统对象,一个是用户空间调用 IO 的进程或者线程,另一个是内核空间的内核系统,比如发生 IO 操作 read 时,它会经历两个阶段: 1. 等待数据准备就绪 2. 将数据从内核拷贝到进程或…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
