React前端项目生成词云图

简介: React前端项目生成词云图

原文合集地址如下,有需要的朋友可以关注

本文地址

合集地址

词云图(word cloud)是一个常见的可视化技术,可以直观有效地反映文本主题的特征和结构。 React 项目中来实现前端词云图,可以使用第三方 JavaScript 词云图库,通过 npm 安装,然后在项目中直接使用。
比如可以使用:

  • jquery.tagcloud.js
  • wordcloud2.js
  • d3-cloud
  • 开源的 React 词云图库等。
    主要介绍基于wordCloud.js实现的词云图,包括词的背景样式和toolTip以及监听点击事件。

    1、wordCloud

    WordCloud 算得上是一个轻量级的依赖,因为它是一个相对简单的库,专门用于生成词云图。它的核心功能是将给定的词云数据按照权重和配置进行布局和渲染,生成词云图形。

WordCloud 使用的是 D3.js 库的一部分,并且在实现上比较简单,没有过多的复杂功能。它主要依赖于 SVG 和 Canvas 来绘制词云图,而且体积较小。

相比于其他更复杂的数据可视化库,WordCloud 属于较为轻量级的选择。它适合于那些只需要生成简单词云图的项目,而不需要过多的定制和交互功能。

2、WordCloud 库提供了一些常用的 API 来配置和控制词云图的生成。

以下是一些常用的 API:

  1. WordCloud(elements, options): 初始化 WordCloud 实例并生成词云图。elements 参数是一个 DOM 元素或元素的 ID,表示词云图的容器。options 参数是一个对象,用于配置词云图的属性。

  2. list: 词云图的数据数组,每个元素是一个数组 [word, weight],表示单词和权重。例如:[['apple', 10], ['banana', 8], ['orange', 6]]

  3. gridSize: 词云图中每个单词的网格大小。默认值为 8。

  4. weightFactor: 单词权重的缩放因子。默认值为 1。

  5. rotateRatio: 单词旋转的比例。默认值为 0.5,表示 50% 的单词会旋转。

  6. minSize: 单词最小字体大小。默认值为 0。

  7. maxSize: 单词最大字体大小。默认值为无限大。

  8. backgroundColor: 词云图的背景颜色。可以是颜色名称、十六进制值或 RGB 值。

  9. color: 单词的颜色。可以是颜色名称、十六进制值或 RGB 值。

  10. fontWeight: 单词的字体粗细。可以是 CSS 字体粗细值,如 'normal''bold' 等。

这些只是一些常用的 API,WordCloud 库还提供了其他一些配置选项和方法。你可以查阅 WordCloud 库的官方文档来获取完整的 API 参考和更多详细的使用说明。

WordCloud 库的文档可以在其 GitHub 存储库中找到:https://github.com/jasondavies/d3-cloud

3、下面是基于React+ts的代码例子

import React, {
    useEffect, useState } from 'react';
import WordCloud from 'wordcloud';

const WordCloudPage: React.FC = () => {
   
  const [words, setWords] = useState<string[]>([]);

  useEffect(() => {
   
    // 模拟从 API 获取词云数据
    const fetchData = async () => {
   
      try {
   
        const response = await fetch('https://api.example.com/word-cloud-data');
        const data = await response.json();
        setWords(data.words);
      } catch (error) {
   
        console.error('Failed to fetch word cloud data:', error);
      }
    };

    fetchData();
  }, []);

  useEffect(() => {
   
    // 在组件挂载后初始化词云图
    const container = document.getElementById('word-cloud-container');
    if (container) {
   
      WordCloud(container, {
   
        list: words.map((word) => [word, Math.random() * 10 + 1]),
        gridSize: 8,
        weightFactor: 10,
        tooltip: {
   
          enabled: true,
          formatter: (item) => `${item[0]}: ${item[1]}`,
        },
        hover: (item, dimension, event) => {
   
          // 添加悬停样式
          event.target.style.fontWeight = 'bold';
        },
        mouseout: (item, dimension, event) => {
   
          // 移除悬停样式
          event.target.style.fontWeight = 'normal';
        },
      });
       // 监听点击事件
      container.addEventListener('click', handleWordClick);
    }
    return () => {
   
      // 移除事件监听器
      container?.removeEventListener('click', handleWordClick);
    };
  }, [words]);
    const handleWordClick = (event: MouseEvent) => {
   
    const clickedWord = event.target as HTMLElement;
    const wordId = clickedWord.getAttribute('data-word-id');
    if (wordId) {
   
      // 在这里处理点击词语的逻辑
      console.log('Clicked word ID:', wordId);
    }
  };
  return (
     <div>
      <h1>Word Cloud</h1>
      <div id="word-cloud-container" style={
   {
    width: '800px', height: '500px' }}>
        {
   words.map((word) => (
          <span key={
   word.id} data-word-id={
   word.id}>
            {
   word.text}
          </span>
        ))}
      </div>
    </div>
  );
};

export default WordCloudPage;
目录
相关文章
|
7月前
|
移动开发 前端开发 JavaScript
Vue与React两大前端框架的主要差异点
以上就是Vue和React的主要差异点,希望对你有所帮助。在选择使用哪一个框架时,需要根据项目的具体需求和团队的技术栈来决定。
411 83
|
8月前
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
376 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
10月前
|
Dart 前端开发
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
329 75
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
DeepSeek Artifacts:在线实时预览的前端 AI 编程工具,基于DeepSeek V3快速生成React App
DeepSeek Artifacts是Hugging Face推出的免费AI编程工具,基于DeepSeek V3,支持快速生成React和Tailwind CSS代码,适合快速原型开发和前端组件构建。
2195 39
DeepSeek Artifacts:在线实时预览的前端 AI 编程工具,基于DeepSeek V3快速生成React App
|
9月前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
562 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
9月前
|
安全 前端开发 开发工具
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
437 5
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
|
9月前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
421 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
10月前
|
Dart 前端开发 容器
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
301 18
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
10月前
|
前端开发 Java 开发工具
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
702 18
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
|
8月前
|
人工智能 JavaScript 前端开发
Vue 性能革命:揭秘前端优化的终极技巧;Vue优化技巧,解决Vue项目卡顿问题
Vue在处理少量数据和有限dom的情况下技术已经非常成熟了,但现在随着AI时代的到来,海量数据场景会越来越多,Vue优化技巧也是必备技能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~

热门文章

最新文章

  • 1
    Vue 3 + TypeScript 现代前端开发最佳实践(2025版指南)
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
  • 3
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
  • 5
    前端如何禁止用户打开 F12 开发者工具
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数