如何實(shí)現(xiàn)一款好用的云圖(word-cloud)生成工具?
創(chuàng)作背景
可以隨時(shí)生成一副很酷的云圖,一直是個(gè)人的夢(mèng)想。
效果如下:
不過(guò)存在一些小問(wèn)題:
- 無(wú)法自動(dòng)分詞
- 無(wú)法根據(jù)詞頻設(shè)置字體大小
于是自己在 github 上逛了一圈,發(fā)現(xiàn)了 kumo 這一款開(kāi)源工具,
入門體驗(yàn)發(fā)現(xiàn)要寫 10 多行代碼才能實(shí)現(xiàn)一個(gè)最基本的云圖。
這很不優(yōu)雅,于是決定基于 kumo 實(shí)現(xiàn)一個(gè)更加易用的版本。
word-cloud
word-cloud 是一款為 java 設(shè)計(jì)的云圖生成工具。
特性
- 極簡(jiǎn) api,一行代碼搞定一切
- 支持自定義云圖背景
- 支持中英文分詞,默認(rèn)對(duì)用戶透明
- 支持停頓詞過(guò)濾,默認(rèn)對(duì)用戶透明
- 支持各種用戶自定義配置
變更日志
快速開(kāi)始
maven 引入
- <dependency>
- <groupId>com.github.houbb</groupId>
- <artifactId>word-cloud</artifactId>
- <version>1.2.2</version>
- </dependency>
使用
- WordCloudHelper.wordCloud("該作講述的是一個(gè)名為德特茅斯的衰落小鎮(zhèn)下掩埋著一個(gè)古老的廢棄王國(guó),名叫圣巢。這個(gè)王國(guó)被瘟疫所侵蝕而廢棄,廢棄的原因則是因?yàn)槊麨檩椆獾墓庵派?,她可以通過(guò)思想來(lái)傳播瘟疫,被瘟疫侵蝕的蟲子都會(huì)被本能所支配,失去心智。\n" +
- "這個(gè)王國(guó)的主人——蒼白之王,自然不會(huì)坐視不管,他在圣巢范圍之下的深淵,利用另一種遠(yuǎn)古力量“虛空”可以壓制光明的特性,制造了容器一族。其中一位被選中的容器用來(lái)封印瘟疫,并被命名為空洞騎士。為了封印的穩(wěn)固,白王尋找了三個(gè)守夢(mèng)人來(lái)進(jìn)一步鞏固封印,三位守夢(mèng)人的名稱分別為守望者 - 盧瑞恩,導(dǎo)師 - 莫諾蒙,野獸 - 赫拉。但之后蒼白之王不知去向,不完美的容器的力量的也變得逐漸虛弱,最終被輻光控制。主角就要穿過(guò)圣巢的各地,在安息之地中,我們受到曾經(jīng)輻光的信徒和眷族——飛蛾族唯一留下的族人的幫助,獲得了和輻光力量同源的夢(mèng)之武器——夢(mèng)之釘。夢(mèng)之釘可以讀取生物內(nèi)心的想法,并可以打破守夢(mèng)人的保護(hù),進(jìn)入到其夢(mèng)境之中殺死守夢(mèng)人。殺死了三位守夢(mèng)人并解開(kāi)封印后,可選的結(jié)局有到達(dá)十字路里的黑卵神殿打敗空洞騎士或去到在“尋神者”更新中新加入的地點(diǎn)“神居”并挑戰(zhàn)圣巢萬(wàn)神殿。");
效果:

支持背景
我們以鯨魚的背景,可以讓文字以圖像的形式展現(xiàn):
- String imagePath = "backgrounds\\whale_small.png";
- WordCloudHelper.wordCloud(text, "out_bg.png", imagePath);
效果如下:

Road-Map
[x] 默認(rèn)的形狀,圖片。
[x] 引入圖片背景
[ ] 默認(rèn)的字體優(yōu)化
[ ] image 居中
開(kāi)源
本來(lái)是抱著自?shī)首詷?lè)的目的寫了這個(gè)小工具,但是感覺(jué)還是應(yīng)該把這個(gè)應(yīng)用開(kāi)源出來(lái)。
因?yàn)闆](méi)有 kumo 的開(kāi)源,也就沒(méi)有這一款工具。
開(kāi)源地址:
https://github.com/houbb/word-cloud