制作詞雲庫圖片


超簡單:3分鍾制作驚艷的詞雲圖

本篇先來解釋一個名詞“詞雲”,“詞雲”就是對網絡文本中出現頻率較高的“關鍵詞”予以視覺上的突出,形成“關鍵詞雲層”或“關鍵詞渲染”,從而過濾掉大量的文本信息,使瀏覽網頁者只要一眼掃過文本就可以領略文本的主旨。 詞雲圖,很牛逼的存在,最近幾天我也研究了一下,本篇將帶領大家生成漂亮的詞雲圖。詞雲的生成依據權重較高低, 詞的傾斜角度、字體、顏色等屬性來控制生成的詞雲圖 。話不多說,先來看一些我生成的例子。

喝杯咖啡

戰斧

蜜芽蜜芽

實用的詞雲網站

1.https://wordart.com/

國外版的詞雲圖制作網站,網站操作頁面如下圖,你可以導入文本,或者導入網頁內容,設置詞雲圖要生成的圖形,字體,布局,樣式等。生成出的詞雲圖你也可以對它進行編輯,根據自己需求進行改動。(注:默認不支持中文,需導入中文字體)

2.https://minitagcloud.cn/create.html

國產詞雲制作網站,內容比較豐富,包含上一款制作詞雲的所有功能。(國產更適合國民使用習慣)

3.https://worditout.com/

網站很人性,還給用戶解釋什么是詞雲以及詞雲的作用等信息。它操作簡單,進入網站后只需要輸入一段文本,然后就可以生成各種樣式的“雲”文字。用戶可以根據自己的需要對WordItOut進行再設計,比如顏色、字符、字體、背景、文字位置等,保存下載后,可以復制。

4.http://yciyun.com/

易詞雲又一款國產強大的詞雲制作網站。里面的強大歡迎自己去體驗。

代碼生成詞雲圖

在為找到上面那么多優秀的詞雲圖制作網站而興奮的時候,我突然意識到一點,我是程序員額!於是我搜羅如何通代碼完成上述功能。Goooooogle一下,有很多通過程序生成雲詞圖的實例,我看到主要有兩類,python,Java和Js的實現。

1.python生成詞雲圖

簡單的代碼示例如下:

# coding=utf-8
from wordcloud import WordCloud

f = open(u'txt/file.txt','r').read()
wordcloud = WordCloud(background_color="white",width=1000, height=860, margin=2).generate(f)
# width,height,margin可以設置圖片屬性

# generate 可以對全部文本進行自動分詞,但是他對中文支持不好
#wordcloud = WordCloud(font_path = r'D:\Fonts\simkai.ttf').generate(f)
# 你可以通過font_path參數來設置字體集

#background_color參數為設置背景顏色,默認顏色為黑色
import matplotlib.pyplot as plt
plt.imshow(wordcloud)
plt.axis("off")
plt.show()
wordcloud.to_file('out.png')


效果圖如下:

這只是一個簡單的例子。你可根據自己的需求設置字體,設置形狀,設置顏色,傾斜度等屬性。

基於Python的詞雲生成類庫,很好用,而且功能強大.個人強力推薦

github https://github.com/amueller/word_cloud

官方地址: https://amueller.github.io/word_cloud/

2.Java生成詞雲圖

需要添加maven依賴

        <dependency>
            <groupId>com.kennycason</groupId>
            <artifactId>kumo-core</artifactId>
            <version>1.13</version>
        </dependency>
        <dependency>
            <groupId>com.kennycason</groupId>
            <artifactId>kumo-tokenizers</artifactId>
            <version>1.12</version>
        </dependency>
        

java代碼如下:

      //建立詞頻分析器,設置詞頻,以及詞語最短長度,此處的參數配置視情況而定即可
        FrequencyAnalyzer frequencyAnalyzer = new FrequencyAnalyzer();
        frequencyAnalyzer.setWordFrequenciesToReturn(600);
        frequencyAnalyzer.setMinWordLength(2);
 
        //引入中文解析器
        frequencyAnalyzer.setWordTokenizer(new ChineseWordTokenizer());
	//指定文本文件路徑,生成詞頻集合
        final List<WordFrequency> wordFrequencyList = frequencyAnalyzer.load("E:\\ciyun/wordcloud.txt");
	//設置圖片分辨率
        Dimension dimension = new Dimension(1920,1080);
	//此處的設置采用內置常量即可,生成詞雲對象
        WordCloud wordCloud = new WordCloud(dimension,CollisionMode.PIXEL_PERFECT);
        //設置邊界及字體
	wordCloud.setPadding(2);
        java.awt.Font font = new java.awt.Font("STSong-Light", 2, 20);
	//設置詞雲顯示的三種顏色,越靠前設置表示詞頻越高的詞語的顏色
        wordCloud.setColorPalette(new LinearGradientColorPalette(Color.RED, Color.BLUE, Color.GREEN, 30, 30));
        wordCloud.setKumoFont(new KumoFont(font));
	//設置背景色
        wordCloud.setBackgroundColor(new Color(255,255,255));
	//設置背景圖片
	//設置背景圖層為圓形
	wordCloud.setBackground(new CircleBackground(255));
        wordCloud.setFontScalar(new SqrtFontScalar(12, 45));
	//生成詞雲
        wordCloud.build(wordFrequencyList);
        wordCloud.writeToFile("D:\\ciyun/ciyun1.png");

運行效果:

3.Js生成詞雲圖

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
	<script src="https://cdn.bootcss.com/wordcloud2.js/1.1.0/wordcloud2.js"></script>
	<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
	<div id="canvas-container" align="center">
		<canvas id="canvas" width="600px" height="400px"></canvas>
	</div>
</body>
</html>
<script>
    var options = eval({
        "list": [
            ['Google', 10],
            ['Tencent', 9],
            ['Alibaba', 7],
            ['Baidu', 6],
            ['NetEase', 4],
            ['JD', 5],
            ['Youku', 4],
            ['Meituan', 3],
            ['Douban', 3]
        ],
        "gridSize": 16, // size of the grid in pixels
        "weightFactor": 10, // number to multiply for size of each word in the list
        "fontWeight": 'normal', // 'normal', 'bold' or a callback
        "fontFamily": 'Times, serif', // font to use
        "color": 'random-light', // 'random-dark' or 'random-light'
        "backgroundColor": '#333', // the color of canvas
        "rotateRatio": 1 // probability for the word to rotate. 1 means always rotate
    });
    var canvas = document.getElementById('canvas');
    WordCloud(canvas, options);
</script>

運行效果:

官網在線體驗地址:https://wordcloud2-js.timdream.org/#love

項目源碼地址:https://github.com/timdream/wordcloud

項目源碼地址:https://github.com/timdream/wordcloud2.js

結語

好了,一個生成詞雲圖的功能,我扒出了這么多東西。意外的發現讓我覺得詞雲圖很好玩,就Gooogle了一下,沒想到有一堆網站。3分鍾對工具網站的喜愛后,我嘗試通過技術手段來實現。沒想到有多種生成詞雲圖的方式,着時讓我震驚。回頭看我發現詞雲的這個過程,讓我想起了一句話“以為的不是你以為的”,互聯網時代是信息大爆炸的時代,只有不斷學習,不斷提升認知,才能讓你立於不敗之地!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM