Python受欢迎的原因之一就是其计算生态丰富,据不完全统计,Python 目前为止有约13万+的第三方库。
本系列将会陆续整理分享一些有趣、有用的第三方库。
-
通过百度网盘获取:
链接:https://pan.baidu.com/s/1FSGLd7aI_UQlCQuovVHc_Q?pwd=mnsj
提取码:mnsj
-
前往GitHub获取:
https://github.com/returu/Python_Ecosystem
https://github.com/amueller/word_cloud
pip install wordcloud
-
1、导入Wordcloud库:
from wordcloud import WordCloud
import jieba
text = "这是一个中文文本示例,用于制作词云图。"
words = jieba.cut(text)
text_space_split = ' '.join(words)
wordcloud = WordCloud(background_color='black',
colormap='viridis',
font_path='simhei.ttf')
-
width和height:指定词云图的宽度和高度(以像素为单位)。 -
background_color:指定词云图的背景颜色,默认为黑色。 -
colormap:指定词云图的颜色映射方案。 -
font_path:指定中文字体路径,以避免中文乱码问题。 -
max_words:指定词云图中显示的最大单词数,默认为200。 -
stopwords:指定一个停用词集合,这些词将不会出现在词云图中。 -
mask:指定一个二值掩码图像,用于定义词云的形状。 -
contour_width和contour_color:用于绘制掩码轮廓的宽度和颜色。
wordcloud.generate(text_space_split )
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off') # 隐藏坐标轴
plt.show()
wordcloud.to_file('wordcloud.png')
得到如下词云图:

WordCloud对象提供的方法主要包括以下几种:
-
generate(text):
-
generate_from_frequencies(frequencies):
-
fit_words(diction, max_font_size=None):
-
to_file(filename):
-
to_array():将词云转换为numpy数组。
# 根据文本生成词云
wordcloud.generate(text)
# 将词云转换为NumPy数组
wordcloud_array = wordcloud.to_array()
-
recolor(color_func, random_state=None):
-
首先创建了一个包含单词及其频率的字典frequencies。 -
然后,创建了一个WordCloud对象。 -
使用generate_from_frequencies方法根据词频字典生成了词云。 -
接下来,定义了一个random_color_func函数,该函数为每个单词生成一个随机的HSL颜色值。 -
使用recolor方法和定义的random_color_func函数重新着色词云,并可视化。
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import numpy as np
# 示例词频字典
frequencies = {
'Python': 100,
'Data': 70,
'Science': 50,
'Machine': 80,
'Learning': 90,
'AI': 60,
'Visualization': 40,
'WordCloud': 120
}
# 创建WordCloud对象
wordcloud = WordCloud(background_color='black')
# 使用generate_from_frequencies方法生成词云
wordcloud.generate_from_frequencies(frequencies)
# 或者使用fit_words方法(效果与generate_from_frequencies类似)
# wordcloud.fit_words(frequencies)
# 显示生成的词云
plt.figure(figsize=(5, 3))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off') # 不显示坐标轴
plt.show()
# 重新着色词云(示例:使用随机颜色)
# 在这个函数中,上述参数并没有被直接使用,但被传递给函数以符合WordCloud.recolor方法的期望签名。
def random_color_func(word, font_size, position, orientation, random_state=None, **kwargs):
# 该函数会返回一个表示随机亮度的红色系的HSL颜色字符串,因为色调被固定为0(表示红色系的某种颜色)、饱和度被设置为100%、
return"hsl(0, 100%%, %d%%)" % np.random.randint(60, 100)
wordcloud.recolor(color_func=random_color_func, random_state=40)
# 显示重新着色后的词云
plt.figure(figsize=(5, 3))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off') # 不显示坐标轴
plt.show()
得到如下词云图:

更多内容可以前往GitHub官方页面查看。


本篇文章来源于微信公众号: 码农设计师