十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
今天來(lái)分享 6 個(gè)超實(shí)用的詞云庫(kù),以快速實(shí)現(xiàn)詞云效果!

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請(qǐng)、雅安服務(wù)器托管、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、友誼網(wǎng)站維護(hù)、網(wǎng)站推廣。
wordcloud2.js 是一個(gè)基于 HTML5 Canvas 的詞云庫(kù),主要用于生成詞云效果。它的特點(diǎn)包括:
使用方式如下:
npm install wordcloud
import WordCloud from 'wordcloud';
WordCloud(document.getElementById('myCanvas'), {
list: [
['foo', 12],
['bar', 6],
// ...
],
// 其他自定義選項(xiàng)
});Github:https://github.com/timdream/wordcloud2.js
echarts-wordcloud 是基于 echarts.js 和 wordcloud2.js 的插件,用于在 echarts 可視化圖表中創(chuàng)建詞云。它的特點(diǎn)包括:
使用方式如下:
npm i echarts echarts-wordcloud --save
import * as echarts from 'echarts';
import 'echarts-wordcloud';
const chartDom = document.getElementById('chart');
const myChart = echarts.init(chartDom);
const option = {
series: [{
type: 'wordCloud',
shape: 'circle',
gridSize: 10,
// ...
}]
};
myChart.setOption(option);Github:https://github.com/ecomfe/echarts-wordcloud
d3-cloud是一個(gè)基于 D3.js 和 HTML5 Canvas繪制輸出的開(kāi)源詞云實(shí)現(xiàn)。它的特點(diǎn)包括:
使用方式如下:
npm install d3-cloud
import * as d3 from 'd3';
import * as cloud from 'd3-cloud';
const data = [
{text: "apple", size: 32},
{text: "orange", size: 24},
{text: "banana", size: 16},
{text: "watermelon", size: 8},
{text: "grape", size: 4},
];
const layout = d3.layout.cloud()
.size([800, 600])
.words(data)
.padding(5)
.rotate(function() { return ~~(Math.random() * 2) * 90; })
.font("Impact")
.fontSize(function(d) { return d.size; })
.on("end", draw);
layout.start();
function draw(words) {
d3.select("#wordcloud")
.append("svg")
.attr("width", layout.size()[0])
.attr("height", layout.size()[1])
.append("g")
.attr("transform", "translate(" + layout.size()[0] / 2 + "," + layout.size()[1] / 2 + ")")
.selectAll("text")
.data(words)
.enter().append("text")
.style("font-size", function(d) { return d.size + "px"; })
.style("font-family", "Impact")
.style("fill", function(d, i) { return d3.schemeCategory10[i % 10]; })
.attr("text-anchor", "middle")
.attr("transform", function(d) {
return "translate(" + [d.x, d.y] + ")rotate(" + d.rotate + ")";
})
.text(function(d) { return d.text; });
};
Github:https://github.com/jasondavies/d3-cloud
react-tagcloud 是一個(gè)基于 React 框架的標(biāo)簽云組件,用于在應(yīng)用中呈現(xiàn)具有不同字體大小和顏色的標(biāo)簽。它的特點(diǎn)包括:
使用方式如下:
npm install react-tagcloud
import ReactTagCloud from 'react-tagcloud';
const data = [
{ value: 'React', count: 25 },
{ value: 'JavaScript', count: 18 },
{ value: 'Nodejs', count: 30 },
...
];
const options = {
//其他 options 設(shè)置
};
//渲染標(biāo)簽云
Github:https://github.com/madox2/react-tagcloud
VueWordCloud 是一個(gè)基于 Vue.js 的詞云組件庫(kù)。它的特點(diǎn)包括:
使用方式如下:
npm install vuewordcloud
import Vue from 'vue';
import VueWordCloud from 'vuewordcloud';
Vue.component('VueWordCloud', VueWordCloud);style="
height: 480px;
width: 640px;
"
:words="[['romance', 19], ['horror', 3], ['fantasy', 7], ['adventure', 3]]"
:color="([, weight]) => weight > 10 ? 'DeepPink' : weight > 5 ? 'RoyalBlue' : 'Indigo'"
font-family="Roboto"
/>
在上面的代碼中,'options' 是傳遞給 VueWordCloud 組件的詞云選項(xiàng),可以根據(jù)需要自定義這些選項(xiàng)。
Github:https://github.com/SeregPie/VueWordCloud
react-d3-cloud 是一個(gè)使用 d3-cloud 構(gòu)建的詞云 React 組件。
使用方式如下:
npm install react-d3-cloud
import React from 'react';
import { render } from 'react-dom';
import WordCloud from 'react-d3-cloud';
import { scaleOrdinal } from 'd3-scale';
import { schemeCategory10 } from 'd3-scale-chromatic';
const data = [
{ text: 'Hey', value: 1000 },
{ text: 'lol', value: 200 },
{ text: 'first impression', value: 800 },
{ text: 'very cool', value: 1000000 },
{ text: 'duck', value: 10 },
];
const schemeCategory10ScaleOrdinal = scaleOrdinal(schemeCategory10);
render(
data={data}
width={500}
height={500}
fnotallow="Times"
fnotallow="italic"
fnotallow="bold"
fnotallow={(word) => Math.log2(word.value) * 5}
spiral="rectangular"
rotate={(word) => word.value % 360}
padding={5}
random={Math.random}
fill={(d, i) => schemeCategory10ScaleOrdinal(i)}
notallow={(event, d) => {
console.log(`onWordClick: ${d.text}`);
}}
notallow={(event, d) => {
console.log(`onWordMouseOver: ${d.text}`);
}}
notallow={(event, d) => {
console.log(`onWordMouseOut: ${d.text}`);
}}
/>,
document.getElementById('root')
);
Github:https://github.com/Yoctol/react-d3-cloud