欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在线词云加载慢,有水印?作为程序员,教你如何使用Java,Python和JS生成词云!

程序员文章站 2022-05-04 21:38:30
...

声明:本文转载huaairen作者一文《制作词云库图片》,如有侵权,请联系删除。

前言

某天心血来潮,想搞搞词云这玩意,网上很多在线生成词云的网站,但是加载都比较慢,或者有水印,再或者是无水印却背景颜色不喜欢。心想,这玩意不难,应该有开源代码库可以使用的吧?网上一搜,虽然方法不多,但是也总有一些好使的,特意摘取huaairen一文,加以提取出使用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')

效果图如下:
在线词云加载慢,有水印?作为程序员,教你如何使用Java,Python和JS生成词云!
小总结:
这只是一个简单的例子。你可根据自己的需求设置字体,设置形状,设置颜色,倾斜度等属性。
基于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");

运行效果:
在线词云加载慢,有水印?作为程序员,教你如何使用Java,Python和JS生成词云!
小总结:
使用这个方法需要安装java的jdk环境,同时还需要引入两个包,有环境和熟悉的可以尝试使用此方法

3. Js生成词云图

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>

运行效果:
在线词云加载慢,有水印?作为程序员,教你如何使用Java,Python和JS生成词云!
小总结:
这个方法最简单,只需新建一个文件文本,命名为world-cloud.html,然后将代码复制进去,用浏览器运行world-cloud.html文件即可生成词云。
官网在线体验地址:https://wordcloud2-js.timdream.org/#love
项目源码地址:https://github.com/timdream/wordcloud
项目源码地址:https://github.com/timdream/wordcloud2.js


总结:如需看更详细的文章内容,请看原文,链接如下:
https://www.cnblogs.com/huaairen/p/12203143.html

相关标签: 技术杂谈