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 上;
  • 配置词云图选项:通过配置 echartsoption 对象,设置词云图的样式、布局和数据。在 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 的值接近 0180 度时,余弦的绝对值会接近 1,而正弦的绝对值会接近 0,因此正方形的形状会更接近于宽度大于高度的长方形。当 theta 的值接近 90270 度时,余弦的绝对值会接近 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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

06-java基础——集合的复习

集合的体系结构 集合主要分为两类&#xff1a; 单列集合双列集合 一、单列集合 list系列集合&#xff1a;添加的元素是有序、可重复、有索引的。 有序&#xff1a;指的是存和取的顺序是一致的 set系列集合&#xff1a;添加的元素是无序、不可重复、无索引的。 collection&…

Python爬虫实战案例——王者荣耀皮肤抓取

大家好&#xff0c;我是你们的老朋友——南枫&#xff0c;今天我们一起来学习一下该如何抓取大家经常玩的游戏——王者荣耀里面的所有英雄的皮肤。 老规矩&#xff0c;直接上代码&#xff1a; 导入我们需要使用到的&#xff0c;也是唯一用到的库&#xff1a; 我们要抓取皮肤其…

统计信号处理基础 习题解答11-11

题目 考虑矢量MAP估计量 证明这个估计量对于代价函数 使贝叶斯风险最小。其中&#xff1a;, &#xff0c;且. 解答 贝叶斯风险函数&#xff1a; 基于概率密度的非负特性&#xff0c;上述对积分要求最小&#xff0c;那就需要内层积分达到最小。令内层积分为&#xff1a; 上述积…

【SkiaSharp绘图12】SKCanvas方法详解(一)清空、裁切区域设置、连接矩阵、注释、弧与扇形、图集、九宫格绘图、圆

文章目录 SKCanvas 方法Clear 清空ClipPath/ClipRect/ClipRegion/ClipRoundRect 设置裁切区域Concat 连接矩阵DrawAnnotation绘制注释DrawArc绘制椭圆弧、扇形DrawAtlas绘制图集(一个图像、多个区域、多个缩放、一次绘制&#xff09;DrawBitmap绘制图像DrawBitmapNinePatch九宫…

停车场车牌识别计费系统,用Python如何实现?

关注星标&#xff0c;每天学习Python新技能 前段时间练习过的一个小项目&#xff0c;今天再看看&#xff0c;记录一下~ 项目结构 说明&#xff1a; datefile文件夹&#xff1a;保存车辆信息表的xlsx文件 file文件夹&#xff1a;保存图片文件夹。ic_launcher.jpg是窗体的右上角…

vector模拟实现【C++】

文章目录 全部的实现代码放在了文章末尾准备工作包含头文件定义命名空间和类类的成员变量 迭代器迭代器获取函数 构造函数默认构造使用n个值构造迭代器区间构造解决迭代器区间构造和用n个值构造的冲突拷贝构造 析构函数swap【交换函数】赋值运算符重载emptysize和capacityopera…

字符串知识点

API API和API帮助文档 API:目前是JDK中提供的各种功能的Java类。 这些类将底层的实现封装了起来&#xff0c;我们不需要关心这些类是如何实现的&#xff0c;只需要学习这些类如何使用即可。 API帮助文档&#xff1a;帮助开发人员更好的使用API和查询API的一个工具。 String概…

【Linux】线程封装与互斥(万字)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 文章目录 前言 C多线程的用法 对原生线程进行一次封装 理解pthread线程 Linux线程互斥 进程线程间的互斥相关背景概念 互斥量mutex 操作共享变量会有问题的售票…

eventloop 事件循环机制 (猜答案)

// eventloop 事件循环机制// console.log(555);setTimeout(() > {console.log(666);})let p new Promise((resolve,reject)>{// 同步执行console.log(111);resolve();});// promise 的回调函数是异步的微任务p.then(v > {console.log(222);}, r > {console.log(r…

解决ps暂存盘已满的问题

点击编辑->首选项->暂存盘 ps默认暂存盘使用的是c盘&#xff0c;我们改成d盘即可 然后重启ps

OpenSSL的一些使用案例

目录 一、介绍 二、基本使用 1、Shell &#xff08;1&#xff09;文件加解密 &#xff08;2&#xff09;生成密钥文件 2、API &#xff08;1&#xff09;md5sum &#xff08;2&#xff09;AES256加解密 一、介绍 本篇博客重点不是详细描述 OpenSSL 的用法&#xff0c;只…

snap和apt的区别简单了解

Linux中没有tree命令的时候提示安装的时候出现了两个命令&#xff0c;简单看了看两者有何区别&#xff08;一般用apt就可以了&#xff09;&#xff1a; sudo snap install tree 和 sudo apt install tree 这两个命令都是用来安装 tree 命令行工具的&#xff0c;但它们使用的是不…

antfu/ni 在 Windows 下的安装

问题 全局安装 ni 之后&#xff0c;第一次使用会有这个问题 解决 在 powershell 中输入 Remove-Item Alias:ni -Force -ErrorAction Ignore之后再次运行 ni Windows 11 下的 Powershell 环境配置 可以参考 https://github.com/antfu-collective/ni?tabreadme-ov-file#how …

SpringBoot源码阅读3-启动原理

SpringBootApplication public class DistApplication {public static void main(String[] args) {// 启动入口SpringApplication.run()SpringApplication.run(DistApplication.class, args);} }1、服务构建 这里"服务"指的是SpringApplication对象&#xff0c;服务…

【QT】概述|对象树模型|两种控件模式|信号和槽|lambda

目录 什么是QT 特点 QT程序 main函数 QT按钮 纯代码模式 图形化模式 对象树模型 信号和槽 连接与断开 自动连接 断开连接 信号的发射 lambda表达式 基本语法 捕获列表 Lambda表达式用于信号与槽的连接 例如 什么是QT Qt是一个跨平台的C图形用户界面应用…

WAF的新选择,雷池 SafeLine-安装动态防护使用指南

什么是 WAF WAF 是 Web Application Firewall 的缩写&#xff0c;也被称为 Web 应用防火墙。 区别于传统防火墙&#xff0c;WAF 工作在应用层&#xff0c;对基于 HTTP/HTTPS 协议的 Web 系统有着更好的防护效果&#xff0c;使其免于受到黑客的攻击&#xff1b; 通俗来讲&#…

【数据库】Oracle安装报错(win10安装oracle提示环境不满足最低要求)

目录 一、问题场景&#xff1a; 二、问题描述 三、原因分析&#xff1a; 四、解决方案&#xff1a; 一、问题场景&#xff1a; 安装Oracle数据库 二、问题描述 安装之前提示&#xff08; [INS-13001]环境不满足最低要求。 是否确实要继续? &#xff09; 如图所示&…

运维锅总浅析云原生DevOps工具

本文从Tekton与Kubevela、Jenkins、GitLab CI的区别与联系对常见的云原生DevOps工具进行对比分析&#xff0c;最后给出DevOps工具选型思路。希望对您有所帮助&#xff01; 一、DevOps简介 DevOps是一种结合了软件开发&#xff08;Development&#xff09;和IT运维&#xff08…

1、项目基础

1、系统架构图 2、项目业务组成 3、技术选型 3.1 前端 vue3 ts sass axios 3.2后端 spring-cloud系列 gateway openfeign spring-cloud-alibaba系列 nacos sentinel seata

开放式耳机怎么选?五大2024年口碑销量爆棚机型力荐!

在选购开放式耳机的时候&#xff0c;我们总会因为有太多的选择而陷入两难&#xff0c;又想要一个颜值比较高的&#xff0c;又想要同时兼顾性能还不错的&#xff0c;所以作为测评博主&#xff0c;今天我们就给大家带来自己的一些选购技巧和自己觉得还不错开放式耳机&#xff0c;…