新大榭论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

《新大榭》- 创大榭地方网络社区先锋品牌 新大榭始终专注于地方网络社区平台的建设 关于我们- [大记事]- 留言建议- [新手报道]

发布 .新大榭软件管家(Excel版) V6.0版 财务/仓库/生产/销售/采购/行政/人事/校园 .公告 - 客户 - 打赏 - 职场 - Excel - Python.

新大榭镜像-音乐-法律-图书-高中课堂-实验 广告是为了能更好的发展 [欢迎商家支持本站互利共赢] 广告位招租.首页黄金广告位等您来!联系 13566035181

新大榭论坛 门户 查看主题

7450 - Python库【wordcloud】模块介绍(上)

发布者: admin | 发布时间: 2021-7-24 15:29| 查看数: 1060| 评论数: 2|帖子模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!

您需要 登录 才可以下载或查看,没有账号?注册

x
wordcloud库基本介绍' O/ u5 F7 }; L( ]4 M: N) I4 P
1.1 wordcloud库概述# U3 ?- F6 q- Q: }# w
wordcloud是优秀的词云展示第三方库
' ?9 Y! a8 ~: l5 o$ `& y" J. Y 7450-01-01.jpg
3 a) N* \( w* d; W
  • 词云以词语为基本单位,更加直观和艺术的展示文本
    4 D; o) L, H0 h
7 T4 F. L" |6 H7 k! M) G. L0 \
1.2 wordcloud库的安装0 H, ?1 C4 L' U/ N% R, a
pip install wordcloud (cmd命令行)
( c6 m# z0 W) ~$ _7 O 7450-01-02.jpg ; N  {1 i8 y8 u& L

2 ?+ a& X* t$ o8 S5 fwordcloud库使用说明4 l, |1 C3 t( m
2.1 wordcloud库基本是使用# `6 e, p9 F' \0 z+ _& S' m
wordcloud库把词云当作一个WordCloud对象$ N  r# r4 I" G8 a- l
  • wordcloud.WordCloud()代表一个文本对应的词云
  • 可以根据文本中词语出现的频率等参数绘制词云
  • 绘制词云的形状、尺寸和颜色都可以设定
    / Z- W& Z* O9 j, e0 U! R

% ]; M' P* v7 T8 J3 m3 X: H& {: K2.2 wordcloud库常规方法
7 F* `4 P* I6 O0 e/ B3 K; b
  1. w = wordcloud.WordCloud()
复制代码
  • 以WordCloud对象为基础
  • 配置参数、加载文本、输出文件, U! Z- k, h+ m, b% B8 d, b3 K
+ x/ z5 C6 Z6 b% e; T7 b9 n& o; X
方法 描述
w.generate(txt) 向WordCloud对象w中加载文本txt,w.generate("Python and WordCloud")
w.to_file(filename) 将词云输出为图像文件,.png或.jpg,w.to_file("outfile.png")
* L2 s: c4 a8 d2 C
  • 步骤1:配置对象参数
  • 步骤2:加载词云文本
  • 步骤3:输出词云文件1 ?5 U* h2 h% {/ x+ u
  1. import wordcloud' {3 t# e0 P& F4 g( `3 y

  2. 8 P5 G1 S. X# `
  3. w = wordcloud.WordCloud()( Z& F! S, |" @
  4. w.generate("Python and WordCloud")5 N" X: @, P5 I- s4 U5 G; W0 Z
  5. w.to_file("pywordcloud.png")
复制代码
7450-01-03.jpg 7450-01-04.jpg
, }; c: {3 ?) ^5 Q4 o
* k4 _* R$ r; s9 d, i2.3 配置对象参数
  1. w = wordcloud.WordCloud(<参数>)
复制代码
参数 描述
width 指定词云对象生成图片的宽度,默认400像素9 ]% D; r3 H  v# r7 R& Y
w=wordcloud.WordCloud(width=600)
height 指定词云对象生成图片的高度,默认200像素
0 c: \0 m9 C4 ]7 b! H  i  e- ]w=wordcloud.WordCloud(height=400)
min_font_size 指定词云中字体的最小字号,默认4号2 t: U% A! t5 x0 }
w=wordcloud.WordCloud(min_font_size=10)
max_font_size 指定词云中字体的最大字号,根据高度自动调节
* Q& \* o  z8 w6 @w=wordcloud.WordCloud(max_font_size=20)
font_step 指定词云中字体字号的步进间隔,默认为1- X# O* A% k! S  {' s: |5 _. \
w=wordcloud.WordCloud(font_step=2)
font_path 指定字体文件的路径,默认None
4 b2 u" r! A# q2 e' Aw=wordcloud.WordCloud(font_path="msyh.ttc")
max_words 指定词云显示的最大单词数量,默认2001 ^6 a5 ]5 J2 |8 d! o5 f: |) X6 T
w=wordcloud.WordCloud(max_words=20)
stop_words 指定词云的排除词列表,即不显示的单词列表
2 P& ^! I1 j/ c4 l, Gw=wordcloud.WordCloud(stop_words="Python")
mask 指定词云形状,默认为长方形,需要引用imread()函数
/ g/ l! b( O! O! N6 ffrom scipy.msc import imread
! f0 Z  k# C9 }5 |" W* _, ^mk=imread("pic.png")- g) Q8 g0 |; H, S; ?- f' [$ x8 g7 E
w=wordcloud.WordCloud(mask=mk)
background_color 指定词云图片的背景颜色,默认为黑色5 h4 |1 k3 [- `2 F6 @. h
w=wordcloud.WordCloud(background_color="white")
  1. # mask
    7 D- u1 s, g  d) ]/ f1 E
  2. from scipy.misc import imread
    & U* C  D8 c9 l0 y# T9 N; o6 h1 y) z3 ?

  3. 9 {4 B/ o% t6 E0 q& r4 i
  4. mk=imread("pic.png")
    / h. [1 R: P  J& T, P0 \* P2 a
  5. w=wordcloud.WordCloud(mask=mk)
复制代码
- `; ?! C; Y: V/ ?2 n: s  g( J+ {
2.4 wordcloud应用实例
7 t. p3 a0 h6 X( b- ^% u+ b
  1. import wordcloud
    * i  [( t, @! e6 [* k# V

  2. 5 h- }# d4 A% I
  3. txt = "life is short, you need python"( C  c3 k9 ^! j' v1 P- ^' T- a+ x
  4. w = wordcloud.WordCloud(background_color="white")
    ' L# B- D9 J) i0 O  q1 {
  5. w.generate(txt)/ ]4 I2 P' j$ w2 ~- V
  6. w.to_file("pywcloud.png")
复制代码
7450-01-05.jpg
( U$ [! O1 G% b" H$ K  d8 `2 g4 i6 O3 [6 c0 z: [9 I/ G# K- `
中文需要先分词并组成空格分隔字符串& ?* p, g; G' i6 g0 Z; v
案例:
1 Q$ s0 g% \6 ]1 e! s: t* r
  1. import jieba
    3 g9 O; o5 v5 L& G* c7 K
  2. import wordcloud& a& g$ I, [+ x2 h+ {- j
  3. txt="import jieba
    $ `% b' |" V- N
  4. import wordcloud( |7 ?: T+ q- U: \* Y
  5. txt="新大榭Python学习社区《声明》: Python学习社区 http://www.daxie.net.cn/py/  Python官网 https://www.python.org(一)这里是专为浙江高考生深入学习《信息技术》课程而倾情打造的python学习专栏!(二)建议用户提前注册新大榭官方社区账号并用电脑端登录参加Python系列课程的学习;(三)为提高本社区人气,保护题库答案不被提前泄密,帖子设置了回复主题查看答案功能;(四)如未特别说明本站发布的所有源代码均适用于 Python 3.x 语法体系(与高考语法同步);(a)图灵算法;(b)大数据分析;(c)物联网;(d)人工智能、神经网络;(e)网络爬虫;(f)数据可视化编程;【中级教程】:以大学计算机Python专业课为基础,深入学习和研究Python高级语法框架、网络爬虫、大数据可视化编程、核心算法及实例开发应用;(明年发布,大学适用)-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+//  【竞赛】:收录985、211院校计算机专业Python系列考题,全国计算机蓝桥杯大赛(Python组)试题,对学有余力的重点高中学生提升拓展练习;//  【镇中/仑中/柴中/泰河/明港/滨民/高职】:Python全程公益解答,每人每日限1题,只要上传题目,本站有问必答!(声明: 所有上传的例题将被我们收录题库公益分享)//// 目前社区管理员私下已与 镇中、仑中、柴中、泰河、明港 等宁波北仑周边高中学生家长建立了 Python习题 微信免费咨询答辩沟通渠道(目前已累计解答例题20+);+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+>> 学习流程:【高中】(必修一) >>【笔记】(知识点) >>【模块】(第三方库) >>【微课】(课外拓展) >>【题库】(测评) >> { 终极考场 } 学考 加油!高考 加油!+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+//  ↓【高中】:指由浙江教育出版社官方发行的高中同步课程《信息技术》(必修一)课内同步作业参考答案在线解答;(必修课:零基础用户学习-仅限课内同步作业解答)//  ↓【笔记】:本栏作为高中必修课的补充,深入系统地全方位学习Python系列基础课程,掌握Python基本语法、自变量、函数、流程控制、算法及经典案例的编程实例分析;//  ↓【模块】:新大榭为网友提供部分优秀的Python第三方库模块专题系列知识点的讲解,让学员快速掌握Python优秀第三方库理论知识、编程技巧及实践案例的应用;//  ↓【微课】:新大榭论坛新增网红微课图文讲解,为学生提供课外阅读电脑编程专题微课的讲解,进一步拓展学员深入理解编程思维及对多维度算法的掌握及灵活应用;//  ↓【题库】:①浙江高中段《信息技术》(必修一)同步配套教材实例 ②全国计算机二级等级考试题库 ③蓝桥杯大赛考试题库 ④宁波本地高中各校区公开习题库 ⑤其他;+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+//  ?【作品】:本站原创作品或互联网大佬优秀作品推荐分享(注:新大榭工作室因近期忙于筹备编写Python内部学习资料,当前暂未推出重磅级作品,敬请明年期待~)+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+温馨提示:新大榭于2021年1月正式上线 Python3.X 系列课程,其中 高中教材《信息技术》课堂同步作业解答 已撰写完毕,该课程基于 高中《信息技术》(必修一) 教学大纲,特别适合 新高一 或 新高二 学生在线免费学习,在学习过程中遇到疑难困惑欢迎来社区发帖提问,站长不定时免费亲临授课解答;如果你高考选课为技术,那么本站建议你继续参加提高班课程的学习,我们对部分知识考点做了更加深入的课外拓展训练,部分内容提前渗透了大学编程及算法理论课程,更适合有一定编程基础或学有余力的学生自学辅导。最后,欢迎零基础学生来本站一起在线免费学习python,这个暑假新大榭在这里等你...... “ 携手Python,新大榭与你同行!”+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+特别声明:本栏学习 Python 全程公益免费,但对部分知识点本站设置了会员权限(比如仅浏览看看,只须注册会员就可以了,但如果要下载源代码则一般需要一星以上会员),会员成长按论坛规则,只要用户登陆账号多互动,多发言,常在线,都能记录成长值,很快你就会成长为一星会员、二星会员、三星会员啦!(注:级别越高,福利越多!)+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+《 挑战书 》:不管你是中学、高中还是大学生,如果你自认为 Python 学得还不错,那就来挑战一下我们 200+ 的《题库》吧!+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+题库测评:如成功挑战 50% 题目,学考至少B级以上;如挑战 75% 则高考赋分85分以上;如挑战 90% 则高考赋分可接近满分!(仅限《信息技术》Python编程能力而言)+-----------------------------------------------------------------------------------------------------------------------------题库等级:A 容易题;B 中等题;C 稍难题;D 最难题;【 学考:挑战AB题库,冲刺C题库】│【 高考:挑战ABC题库,冲刺D题库 】 [ 题库等级正在分类中... ]"
    + c2 V/ j7 |4 a) z9 y
  6. w=wordcloud.WordCloud(width=1000,font_path="C:\\Windows\\Fonts\\simhei.ttf",height=700)
    " |5 ]2 Y: M8 ^7 i( F
  7. w.generate(" ".join(jieba.lcut(txt)))- F$ ~( ]( z# I+ z7 }5 `0 E" X
  8. w.to_file("新大榭python社区.png")
复制代码
新大榭python社区.png
7 {8 w2 R% O. J1 P未优化原始效果图:如下所示 ↑↑↑/ [# f1 C1 J$ F" Y# E+ [
: E4 K: G7 X- q, w7 n8 s2 n8 P
新大榭python学习社区_优化.png ' T' i3 m0 {: e" m  s
已优化升级版效果图:如下所示 ↑↑↑
8 @3 Q$ ~; z2 m& \# O8 ^! i注:过滤无效词汇统计(如“”,“” 等),新增专用关键词(如“仑中”,“蓝桥杯” 等
温馨提示:想要详细了解请访问《7361 - 新大榭微课№:016 - 【模块】中文标签云应用实例讲解(原创 - 公开课)

7450-01_未优化.zip

2.94 KB, 下载次数: 121, 下载积分: 财富 -1 点

课件源代码下载

7450-01_已优化.zip

3.16 KB, 阅读权限: 5, 下载次数: 0, 下载积分: 财富 -1 点

课件源代码下载(升级版)

最新评论

admin 发表于 2021-8-8 21:15:28
【拓展篇 - 生成个性化词云】(暂未优化)

7 T% k6 m6 N9 o3 T- _& ?) x 词云.png
. X* X$ K4 h9 e6 L" y! P+ u( \* t4 G0 S5 D' ]& q4 s) s
7450-02-01.jpg $ s" Z' ?# @1 a& \" j9 r
  1. # -*- coding: utf-8 -*-
    6 N  q; ~" I1 j. p, p& g
  2. import pickle  
    9 d( G- Z/ {7 F  t" O
  3. from os import path  ; Q  e# @% A* E4 A& ]  T+ }
  4. import jieba  
    8 M) T+ O# ^: z# Z2 ]
  5. import matplotlib.pyplot as plt  / \6 k2 h+ R. ^. I" ^+ |
  6. from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator  
    $ I; F; H8 s1 K: v
  7. text =''
    + h- L  d$ f+ A) R
  8. with open('text.txt', 'r', encoding='utf8') as fin:  ; g1 N: C! b; X8 h& E
  9.     for line in fin.readlines():  ' }! }/ Q/ A' H, X7 J. \( ?- r
  10.         line = line.strip('\n')  2 v- b+ h9 Z7 `, Y' \5 X" U
  11. # sep’.join(seq)以sep作为分隔符,将seq所有的元素合并成一个新的字符串  , ^8 n. |' `- G0 [- a1 c$ l
  12. text += ' '.join(jieba.cut(line))  7 f" w: r) t& a( B! @* @. f: Z
  13. backgroud_Image = plt.imread('遮罩.jpg') #此处不能使用PNG图片 3 j# E) {, P9 x: ]/ T6 k
  14. print('加载图片成功!')
    " @" [% B7 t) ?( l7 e% l9 l. F
  15. 2 a" Y& k0 T/ R+ l5 G5 C, O
  16. '''设置词云样式'''  $ n" N2 c# v1 i1 V% c* F1 o
  17. wc = WordCloud(  4 ^5 y% X, [3 m* Q
  18.     background_color='white',# 设置背景颜色  
    2 d, N, Q9 }% ~8 T2 T
  19.     mask=backgroud_Image,# 设置背景图片  % `! e7 N3 s/ c, A/ v4 N0 B
  20.     font_path='C:\Windows\Fonts\STZHONGS.TTF',# 若有中文的话,这句代码必须添加,不然会出现方框,不显示汉字  
    - f2 |* h) B0 A/ v; v5 I6 X5 R
  21.     max_words=1000, # 设置最大现实的字数  
    * c( c, n5 g. q
  22.     stopwords=STOPWORDS,# 设置停用词  
    5 r5 l2 t* [% B2 o
  23.     max_font_size=120,# 设置字体最大值  
    * f6 o& ^, B7 l$ @) }9 m+ A. t0 @- F
  24.     random_state=30 # 设置有多少种随机生成状态,即有多少种配色方案  
    " ~/ x. ]* B( j" l
  25. )  4 G: W6 [6 i) B3 g
  26. wc.generate_from_text(text)  # C8 O8 n2 t. Q% F  u  j
  27. print('开始加载文本')) L5 b6 b- b0 e: L, |

  28. ( r# g. \, f1 u& d! U! i8 m$ H
  29. #改变字体颜色  # Z* A- x( h5 f( m8 }, O
  30. img_colors = ImageColorGenerator(backgroud_Image)  1 p: D$ G' F$ o! ~) d" a
  31. #字体颜色为背景图片的颜色  
    2 q6 T- G( H2 X% D: u/ D6 ^$ D
  32. wc.recolor(color_func=img_colors)  
    2 I; j: e$ L: [% R
  33. # 显示词云图  
    & C+ m6 g4 U' O% R* {# `6 \
  34. plt.imshow(wc)  1 O5 v$ U, F, N2 y5 F, k' s
  35. # 是否显示x轴、y轴下标  ' z  c9 N, q* k8 {  h
  36. plt.axis('off')  
    8 O; ~+ [' u, c; W+ B
  37. plt.show()  , m2 G) ?' k  f8 E; ~0 b
  38. # 获得模块所在的路径的  " s! r1 |  L, Y' w
  39. d = path.dirname('file')  3 \, s: x& `" ]
  40. # os.path.join():  将多个路径组合后返回  
      R; B  X/ J' b+ j! |, p
  41. wc.to_file(path.join(d,'词云.png'))
    0 z2 Y4 a/ D! z1 R# ?/ i' T: V3 F
  42. print('生成词云成功!')
复制代码

. H4 f. o# N' ~- |/ k& P, `) R 7450-02-02.jpg

7450-02.zip

554.6 KB, 下载次数: 0, 下载积分: 财富 -1 点

售价: 1 个金币  [记录]  [购买]

课件源代码下载(整套)

admin 发表于 2021-8-8 21:45:35
这是wordcloud的所有参数,下面具体介绍一下各个参数
font_path : string //字体路径,需要展现什么字体就把该字体路径+后缀名写上,如:font_path = '黑体.ttf'
3 I7 ?8 E* _6 H/ r! o5 bwidth : int (default=400) //输出的画布宽度,默认为400像素
0 d, Y4 e! r4 y! z7 t$ c4 Rheight : int (default=200) //输出的画布高度,默认为200像素5 B1 f$ m2 N3 z' @
prefer_horizontal : float (default=0.90) //词语水平方向排版出现的频率,默认 0.9 (所以词语垂直方向排版出现频率为 0.1 )) _) M0 {# G- k& r$ ]# w5 e
mask : nd-array or None (default=None) //如果参数为空,则使用二维遮罩绘制词云。如果 mask 非空,设置的宽高值将被忽略,遮罩形状被 mask 取代。% O$ |6 X8 k4 j6 {
除全白(#FFFFFF)的部分将不会绘制,其余部分会用于绘制词云。如:bg_pic = imread('读取一张图片.png')," |. c# K, F: d  z6 s$ q
背景图片的画布一定要设置为白色(#FFFFFF),然后显示的形状为不是白色的其他颜色。可以用ps工具将自己要显示的形状复制到一个纯白色的画布上再保存,就ok了。/ \0 y( \! F. d
scale : float (default=1) //按照比例进行放大画布,如设置为1.5,则长和宽都是原来画布的1.5倍。: s* A  `0 k1 Y% N
min_font_size : int (default=4) //显示的最小的字体大小
6 }8 G( b' v" A2 Ffont_step : int (default=1) //字体步长,如果步长大于1,会加快运算但是可能导致结果出现较大的误差。
. t( r# M1 D( rmax_words : number (default=200) //要显示的词的最大个数% {( F6 \% Q- g
stopwords : set of strings or None //设置需要屏蔽的词,如果为空,则使用内置的STOPWORDS/ s1 m" X  v- x( m9 M5 }  f
background_color : color value (default=”black”) //背景颜色,如background_color='white',背景颜色为白色。
- W* L5 y) G3 S/ }max_font_size : int or None (default=None) //显示的最大的字体大小6 r- k' F8 N* c
mode : string (default=”RGB”) //当参数为“RGBA”并且background_color不为空时,背景为透明。: g  S: M  y" ?2 @: H; v2 p9 e0 H) i
relative_scaling : float (default=.5) //词频和字体大小的关联性
# E/ h& Q1 B7 D$ `5 W1 @color_func : callable, default=None //生成新颜色的函数,如果为空,则使用 self.color_func
* E2 P! h- Z- O0 l. h0 yregexp : string or None (optional) //使用正则表达式分隔输入的文本4 t5 _& i. M+ ~
collocations : bool, default=True //是否包括两个词的搭配
' o3 X/ o, j! ^( a3 o2 u* ]colormap : string or matplotlib colormap, default=”viridis” //给每个单词随机分配颜色,若指定color_func,则忽略该方法。, I0 j  E% L4 d- K9 R8 [1 u; \) z3 d
fit_words(frequencies) //根据词频生成词云【frequencies,为字典类型】* d, T+ V7 A3 ~+ [( C7 z8 s. ?/ |
generate(text) //根据文本生成词云4 n% w* o0 S8 n& Q. K; q0 ?9 _! Y
generate_from_frequencies(frequencies[, ...]) //根据词频生成词云+ @  |+ ^1 ~% H# ~8 S; j
generate_from_text(text) //根据文本生成词云
2 Q# N: ^3 Y: m* T3 `3 Cprocess_text(text) //将长文本分词并去除屏蔽词(此处指英语,中文分词还是需要自己用别的库先行实现,使用上面的 fit_words(frequencies) )
, F9 V, f1 I# g; nrecolor([random_state, color_func, colormap]) //对现有输出重新着色。重新上色会比重新生成整个词云快很多。
/ n. \/ T- z$ h* Z1 i" L7 D5 uto_array() //转化为 numpy array1 D" G, c& T) ^& c
to_file(filename) //输出到文件8 i9 [" i/ s- d- _) \. Z

4 `: b7 w. U5 U  G1 \简要讲下几个会影响图像清晰问题的WordCloud的参数
mask:遮罩图,字的大小布局和颜色都会依据遮罩图生成。其实理论上这对字大小和清晰程度的影响不大,
" b* o/ L; k+ y但是遮罩图色和背景色background_color如果易混淆,则可能是一个导致看起来不清晰的因素;
; ?# {8 n  v) b另外遮罩图自身各个颜色之间的对比不强烈,也可能使图看起来层次感不够。. i& ?# y3 i0 k8 G8 F' C3 z4 p
比如,一些图明度比较高,再加上背景白色,有可能导致字色太浅(背景色background_color又是白色)于是看起来不够“清晰”。! g. t$ p2 ?$ ]: q5 W
background_color:背景色,默认黑。, @7 @# D) s% r% S. F9 l4 q
这个本来其实也不怎么影响清晰度,但是,就像之前在mask中提到的,如果遮罩图像颜色过浅、背景设置白色,2 R, i/ }% C4 l. \$ I  l0 l
可能导致字看起来“不清晰”。而实际上,我对一个浅色遮罩图分别用白、黑两种背景色后发现,  }, P1 a: s; _0 E
黑色背景的强烈对比之下会有若干很浅也很小的词浮现出来,而之前因背景色、字色过于相近而几乎无法用肉眼看出这些词。
# `7 f) H  ^+ i) T' R: qmode:默认“RGB”。根据说明文档,如果想设置透明底色的云词图,那么可以设置background_color=None, mode="RGBA", a7 w# P! H7 V+ T
但是!!!实际中我尝试设置透明背景色并没有成功过!
% \- \# q$ E( p# ^  L! ?" C当我选取的遮罩图是白色底时,如果background_color设置为"white"或"black"时,生成的云词确实是对应的“白色”“黑色”;
# h9 h0 a* P  I0 z6 X+ s但是按照上述参数设置透明色时,结果出来依然是白色。
4 h1 n: Q; H) y5 t/ h当我选取的遮罩图是透明底时,那么不管我background_color设置为"white"或"black",还是None加上mode="RGBA",7 @6 |  s* R& L; c
结果都是把背景部分当做黑色图块,自动匹配黑色的字!——也就是并没有实现透明底的云词。& p1 N& Z. p7 i  M; W: h
谁如果实现了透明底色的方案,欢迎给我留言。目前这个疑惑我打算先不研究了,放到以后再看。
! v! C9 }& x: W6 v( j) K8 s. xmax_font_size:最大字号。源文件中也有讲到,图的生成会依据最大字号等因素去自动判断词的布局。6 t3 a  [& ^0 U0 \6 i" P; d' s! l
经测试,哪怕同一个图像,只要图本身尺寸不一样(比如我把一个300×300的图拉大到600×600再去当遮罩),那么同样的字号也是会有不同的效果。, u( |" B; G! ^8 }/ y
原理想想也很自然,字号决定了字的尺寸,而图的尺寸变了以后,最大字相对于图的尺寸比例自然就变了。1 U2 Z, k- k* C
所以,需要根据期望显示的效果,去调整最大字号参数值。. f' X1 W# a1 h- b
5 d4 r) ?3 c5 r/ G# Z6 s7 T4 n
min_font_size:最小字号。不设置的情况下,默认是4。
" @" p7 P( J& u+ \尝试了设置比4大的字号,例如8、10,结果就是原本小于设定值且大于4号的词都直接不显示了,其它内容和未设置该值时都一样。3 B! e' t& e/ ^1 J
9 I9 z0 r2 v/ O8 i, \( C( o
relative_scaling:表示词频和云词图中字大小的关系参数,默认0.5。) s7 o  h: A4 Z0 M# l* c8 A
为0时,表示只考虑词排序,而不考虑词频数;为1时,表示两倍词频的词也会用两倍字号显示。
2 A- L# F8 W$ j" @$ E0 Q% C4 }; w& D, M) J' r
scale:根据说明文档,当云词图很大的,加大该值会比使用更大的图更快,但值越高也会越慢(计算更复杂)。  A( h" ]; Z5 L( r8 x+ R8 G# A0 p3 X& H' W
默认值是1。实际测试中,更大的值,确实输出图像看起来更精细(较小较浅的词会颜色更重,也感觉清楚,大的词差异不明显)。! y: A- O  g+ [# i7 \' N1 B
不过,可能由于我选的图不大、词也没有很多,所以差距并没有很大,缩小排列一下就基本上辨别不出多少差别了。- f  S+ O/ s4 t1 @; d
3 J( B6 ], n; M: ?
# C: V% i5 [4 G8 z/ C

文字版|小黑屋|新大榭 ( 浙ICP备16018253号-1 )|点击这里给站长发消息|

GMT+8, 2026-7-12 18:15 , Processed in 0.082338 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表