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

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

Road-Map
[x] 默認的形狀,圖片。
[x] 引入圖片背景
[ ] 默認的字體優化
[ ] image 居中
開源
本來是抱著自娛自樂的目的寫了這個小工具,但是感覺還是應該把這個應用開源出來。
因為沒有 kumo 的開源,也就沒有這一款工具。
開源地址:
https://github.com/houbb/word-cloud