news 2026/6/26 22:23:11

Highcharts词云图表开发文档

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Highcharts词云图表开发文档

词云图

词云是一种可视化一组单词的方式,其中单词的大小和位置由其权重决定。

点击 这里 here 查看代码

需求

词云图表需要以下模块:modules/wordcloud.js.

选项

点击 这里 here 查看所有可用的词云系列选项的概述。

数据结构

每个词云系列中的点都必须包含一个 name 和一个 weight。 名称决定了在可视化中显示的文本内容,而权重 决定了其优先级。优先级最高的点会先被绘制, 并且字体会更大。

data:[{name:'Lorem',weight:3},{name:'Ipsum',weight:2},{name:'Dolor',weight:1}]

高级用法

自定义螺旋算法

螺旋用于在单词与其他单词碰撞或边界发生碰撞后,将单词移动到初始位置之外。 若要实现自定义螺旋,可以参考 archimedeanSpiral 函数,例如:

/** * archimedeanSpiral - Gives a set of coordinates for an Archimedian Spiral. * * @param {number} t How far along the spiral we have traversed. * @return {object} Resulting coordinates, x and y. */vararchimedeanSpiral=functionarchimedeanSpiral(t){t*=0.1;return{x:t*Math.cos(t),y:t*Math.sin(t)};};

螺旋算法通过将其附加到 spirals 属性上实现了访问:

Highcharts.seriesTypes.wordcloud.prototype.spirals.archimedean=archimedeanSpiral;

之后,你可以通过指定选项series<wordcloud>.spiral来使用该算法:

Highcharts.chart(...,{series:[{type:'wordcloud',spiral:'archimedean'}]});

自定义布局策略

策略用于决定单词的旋转角度和初始位置。 若要实现自定义策略,可以参考 randomPlacement 函数,例如:

varrandomPlacement=functionrandomPlacement(point,options){varfield=options.field,r=options.rotation;return{x:getRandomPosition(field.width)-(field.width/2),y:getRandomPosition(field.height)-(field.height/2),rotation:getRotation(r.orientations,r.from,r.to)};};

放置算法通过将其附加到placementStrategy属性上实现了访问:property:

Highcharts.seriesTypes.wordcloud.prototype.placementStrategy.random=randomPlacement;

之后你可以通过指定选项series<wordcloud>.placementStrategy来使用该算法:

Highcharts.chart(...,{series:[{type:'wordcloud',placementStrategy:'random'}]});

自定义字体大小

字体的大小由函数deriveFont计算得出,该函数根据单词的相对权重来确定结果。权重的范围是0到1,表示该单词相对于最大权重单词的大小。当自定义字体大小时,应注意,较大的字体可能会导致布局算法运行变慢,而较小的字体则可能使单词的排布更加分散。

// Include this snippet after loading Highcharts and before Highcharts.chart is executed.Highcharts.seriesTypes.wordcloud.prototype.deriveFontSize=function(relativeWeight){varmaxFontSize=25;// Will return a fontSize between 0px and 25px.returnMath.floor(maxFontSize*relativeWeight);};

需要注意的事项

  • 当单词以非90度倍数的角度旋转时,它们之间会有很多空隙。
    • 当前的碰撞算法没有考虑旋转,只会检查两个单词的外部区域是否碰撞。为了解决这个问题,我们可以利用 分离轴定理 Separating Axis Theorem
  • 当我导出我的图表时,单词的位置发生了变化。
    • 出时会重新渲染数据,这会导致单词在不同的坐标位置,而不是原始图表中的位置。
  • 出时会重新渲染数据,这会导致单词在不同的坐标位置,而不是原始图表中的位置。
    • 当前我们在词云系列中使用的默认字体没有安装在导出服务器上。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 13:38:11

效率翻倍:One API多机部署实现AI服务高可用

效率翻倍&#xff1a;One API多机部署实现AI服务高可用 在企业级AI应用落地过程中&#xff0c;单点服务瓶颈是绕不开的现实问题。当业务流量激增、模型调用并发上升、或某家大模型服务商出现临时波动时&#xff0c;一个孤立的API网关往往成为整个智能系统的脆弱环节。你是否遇…

作者头像 李华
网站建设 2026/6/23 8:56:46

毕业季必看:论文降ai率最全攻略,教你如何有效降低ai率

&#x1f4a1;写论文时&#xff0c;什么最让人头疼&#xff1f; 不是查重&#xff0c;而是检测结果里赫然出现——“AI率过高”。 现在越来越多的高校开始严查论文&#xff0c;专门检测AIGC生成内容。 我曾有一篇论文AI率直接飙到98%&#xff0c;当时真的差点崩溃… 为了“救…

作者头像 李华
网站建设 2026/6/25 14:02:58

Mysql索引优化实战:从 320ms 到 130ms 的慢 SQL 改造

前言&#xff1a;我们项目中&#xff0c;经常遇到需要索引优化的地方&#xff0c;即我们常见的慢查询&#xff0c;那么从一个实际的案例出来&#xff0c;分析慢查询中会经过哪些步骤&#xff0c;哪些环节是我们需要注意的&#xff0c;同时&#xff0c;在整个链路分析中&#xf…

作者头像 李华
网站建设 2026/6/13 2:41:34

Unity DOTS核心概念之 Component(组件)

目录 前言 一、Component 的核心定义与设计原则 1.1 核心定义 1.2 两大黄金法则 二、ECS 组件的三大核心类型 三、基础组件:IComponentData 3.1 定义方式 3.2 内存布局与性能优势 3.3 常用操作 四、分组组件:ISharedComponentData 4.1 核心原理 4.2 定义与使用示例…

作者头像 李华
网站建设 2026/6/12 23:30:37

Unity DOTS核心概念之 System(系统)

目录 前言 一、System 的核心定义与设计准则 1.1 核心定义 1.2 三大核心设计准则 二、System 的核心类型与定义方式 2.1 核心类型分类 2.2 基础 System 定义(ISystem 接口) 2.2.1 最小化 System 模板 2.2.2 关键说明 三、System 的生命周期与执行时机 3.1 完整生命…

作者头像 李华
网站建设 2026/6/25 19:55:35

ABB 3BSE004192R1 压力传感器

孙13665068812ABB 3BSE004192R1 压力传感器&#xff1a;工业自动化中的精确压力测量核心在现代工业自动化系统中&#xff0c;对过程参数的精确、可靠监测是确保生产效率、产品质量、设备安全和能源优化的基石。压力&#xff0c;作为众多关键过程变量之一&#xff0c;其准确测量…

作者头像 李华