前言:
现在各位老铁们对“如何用python做词云”大约比较讲究,大家都想要剖析一些“如何用python做词云”的相关内容。那么小编也在网络上搜集了一些关于“如何用python做词云””的相关资讯,希望姐妹们能喜欢,各位老铁们快快来了解一下吧!第一种,静态图片
直接上代码:
from flask import Flask, render_template, request, jsonifyimport randomfrom wordcloud import WordCloudimport base64app = Flask(__name__)@app.route('/')def index(): return render_template('index.html')@app.route('/generate_wordcloud', methods=['POST'])def generate_wordcloud(): text = request.form['text'] wc = WordCloud(width=800, height=400, background_color='white').generate(text) wc.to_file('static/wordcloud.png') with open("static/wordcloud.png", "rb") as image_file: encoded_string = base64.b64encode(image_file.read()).decode('utf-8') return jsonify({'image': encoded_string})if __name__ == '__main__': app.run(debug=True)
上面代码中返回的是图片字节,需要在前端进行预处理。
<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>WordCloud Generator</title> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/wordcloud2.js/1.0.6/wordcloud2.min.js"></script></head><body> <h1>WordCloud Generator</h1> <form id="wordcloud-form"> <label for="text">Enter text:</label><br> <textarea id="text" name="text" rows="5" cols="50"></textarea><br> <button type="submit">Generate WordCloud</button> </form> <br> <div id="wordcloud-container"></div> <script> $(document).ready(function() { $('#wordcloud-form').submit(function(event) { event.preventDefault(); $.ajax({ type: 'POST', url: '/generate_wordcloud', data: $('#wordcloud-form').serialize(), success: function(response) { $('#wordcloud-container').html('<img src="data:image/png;base64,' + response.image + '">'); $('#text').val(''); } }); }); }); </script></body></html>
有点,生成的云图可以定义背景,形状等,但毕竟是静态的。
第二种,动态图片
1.wordcloud2.js下载(自行搜索)
2.下载之后导入wordcloud2.js到我们的网页
<script type="text/javascript" src="/static/lib/wordcloud2/wordcloud2.js"></script>
3.放置容器
<body> <div id="canvas-container" style="float: left"> <canvas id="canvas" width="800px" height="600px"></canvas> </div></body>
4.初始化
<script> var wordFreqData = [['各位观众',45],['词云', 21],['来啦!!!',13]]; var canvas = document.getElementById('canvas'); var options = eval({ "list": wordFreqData,//或者[['各位观众',45],['词云', 21],['来啦!!!',13]],只要格式满足这样都可以 "gridSize": 6, // 密集程度 数字越小越密集 "weightFactor": 1, // 字体大小=原始大小*weightFactor "maxFontSize": 60, //最大字号 "minFontSize": 14, //最小字号 "fontWeight": 'normal', //字体粗细 "fontFamily": 'Times, serif', // 字体 "color": 'random-light', // 字体颜色 'random-dark' 或者 'random-light' "backgroundColor": '#333', // 背景颜色 "rotateRatio": 1 // 字体倾斜(旋转)概率,1代表总是倾斜(旋转) }); //生成 WordCloud(canvas, options);</script>
注意,wordFreqData的数据格式:
假设列表为lst,可以使用Python内置的Counter来实现词频统计,然后将结果转为列表。具体代码如下:
from collections import Counterlst = ['apple', 'banana', 'apple', 'cherry', 'cherry', 'cherry']counter = Counter(lst)lst_freq = [[k, v] for k, v in counter.items()]print(lst_freq)
输出结果为:
[['apple', 2], ['banana', 1], ['cherry', 3]]
其中,lst_freq就是转换后的列表,每个元素都是一个长度为2的列表,第一个元素是列表中的元素,第二个元素是该元素在列表中出现的次数。
civilpy:Python数据分析及可视化实例目录
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #如何用python做词云