当前位置:首页 > JavaScript

js实现云图

2026-02-02 01:44:26JavaScript

使用WordCloud库生成云图

WordCloud是一个流行的JavaScript库,用于生成词云。安装可以通过npm或直接引入CDN链接。

// 安装
npm install wordcloud
<!-- CDN引入 -->
<script src="https://cdn.jsdelivr.net/npm/wordcloud@1.2.2/src/wordcloud2.min.js"></script>

基本用法示例

创建一个简单的词云需要准备数据和配置选项。数据格式为二维数组,每个子数组包含词语和权重。

const words = [
  ['JavaScript', 30],
  ['Python', 25],
  ['Java', 20],
  ['C++', 15],
  ['Ruby', 10]
];

WordCloud(document.getElementById('wordcloud'), {
  list: words,
  gridSize: 10,
  weightFactor: 5,
  color: 'random-dark'
});

自定义样式和形状

通过配置对象可以调整云图的形状、颜色和布局。shape参数支持圆形、心形等预设形状,或使用自定义图像。

WordCloud(document.getElementById('wordcloud'), {
  list: words,
  shape: 'circle',
  backgroundColor: '#f0f0f0',
  color: function () {
    return '#' + Math.floor(Math.random() * 0xFFFFFF).toString(16);
  }
});

响应式设计处理

为了使云图适应不同屏幕尺寸,需要监听窗口变化事件并重新绘制。

function drawWordCloud() {
  const width = window.innerWidth * 0.8;
  const height = window.innerHeight * 0.6;
  WordCloud(document.getElementById('wordcloud'), {
    list: words,
    gridSize: Math.round(width / 100),
    weightFactor: Math.round(height / 50),
    minSize: 8
  });
}

window.addEventListener('resize', drawWordCloud);
drawWordCloud();

从API获取动态数据

实际应用中常需要从后端API获取词频数据。以下示例展示如何使用fetch获取数据并更新云图。

async function loadWordCloud() {
  try {
    const response = await fetch('/api/word-frequency');
    const data = await response.json();
    WordCloud(document.getElementById('wordcloud'), {
      list: data,
      backgroundColor: '#fff',
      rotateRatio: 0.5
    });
  } catch (error) {
    console.error('数据加载失败:', error);
  }
}

注意事项

  • 性能优化:大数据集时应适当调整gridSize和weightFactor参数
  • 浏览器兼容性:某些配置在移动端可能需要特殊处理
  • 交互功能:可通过添加click事件实现词语点击交互
document.getElementById('wordcloud').addEventListener('wordcloudclick', function(ev) {
  console.log('点击词语:', ev.detail.text);
});

js实现云图

标签: 云图js
分享给朋友:

相关文章

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let…

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的H…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScri…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…