词云图如何设置字体随机颜色python 词云图字体大小

您所在的位置:网站首页 词云设置字体 词云图如何设置字体随机颜色python 词云图字体大小

词云图如何设置字体随机颜色python 词云图字体大小

2024-06-03 12:55:07| 来源: 网络整理| 查看: 265

词云图如何设置字体随机颜色python 词云图字体大小 转载

mob64ca140a8e67 2023-11-25 17:26:46

文章标签 词云图如何设置字体随机颜色python 词云 中文分词 字符串 文章分类 Python 后端开发

本文可参考的github文件想了解更多词云背后的原理同济子豪兄的简书教程

wordcloud库

常用参数

w = wordcloud.WordCloud( width=400, height=200, background_color='black', font_path=None, font_step=1, min_font_size=4, max_font_size=None, max_words=200, stopwords={}, scale=1, prefer_horizontal=0.9, relative_scaling=0.5, mask=None)width 词云图片宽度,默认400像素height 词云图片高度 默认200像素background_color 词云图片的背景颜色,默认为黑色background_color='white'font_step 字号增大的步进间隔 默认1号font_path 指定字体路径 默认None,对于中文可用font_path=‘msyh.ttc’mini_font_size 最小字号 默认4号max_font_size 最大字号 根据高度自动调节max_words 最大词数 默认200stop_words 不显示的单词 stop_words={“python”,“java”}Scale 默认值1。值越大,图像密度越大越清晰prefer_horizontal:默认值0.90,浮点数类型。表示在水平如果不合适,就旋转为垂直方向,水平放置的词数占0.9?relative_scaling:默认值0.5,浮点型。设定按词频倒序排列,上一个词相对下一位词的大小倍数。有如下取值:“0”表示大小标准只参考频率排名,“1”如果词频是2倍,大小也是2倍mask 指定词云形状图片,默认为矩形 若想改变词云的形状,可通过以下代码读入外部词云形状图片(需要先pip install imageio安装imageio)import imageio mk = imageio.imread("picture.png") w = wordcloud.WordCloud(mask=mk)

不常用参数

stop_word:默认无。设定取词程序在某个词处停止,prefer_horizontal:默认值0.90,浮点数类型。表示在水平如果不合适,就旋转为垂直方向,水平放置的词数占0.9?,font_step:默认值1,整数型。对生成的词抽样,设定抽取的两个词之间略过的词的个数,mode:默认值“RGB”,字符串型。或者使用“RGBA”产生透明背景,relative_scaling:默认值0.5,浮点型。设定按词频倒序排列,上一个词相对下一位词的大小倍数。有如下取值:“0”表示大小标准只参考频率排名,“1”如果词频是2倍,大小也是2倍,regexp:默认无,字符串类型。至于作用,笔者还没搞懂,collocations:默认为True,可选项为“bool”。决定词云是否可以包含两个词的搭配,colormap: srting or matplotlib colormap, default=‘viridis’:如果“color_func”指定,则失效;否则由matplotlib的色彩库为每个词随机定颜色,normalize_plurals: bool, default=True:默认为True。默认True决定将词尾后缀‘s’删除。一个简单的词云示例# 导入词云制作第三方库wordcloud import wordcloud # 创建词云对象,赋值给w,现在w就表示了一个词云对象 w = wordcloud.WordCloud() # 调用词云对象的generate方法,将文本传入 w.generate('and that government of the people, by the people, for the people, shall not perish from the earth.') # 将生成的词云保存为output1.png图片文件,保存出到当前文件夹中 w.to_file('output1.png')外部文件导入文本

若想从未外部文件中导入文本,可参考以下代码

import wordcloud # 从外部.txt文件中读取大段文本,存入变量txt中 f = open('关于实施乡村振兴战略的意见.txt',encoding='utf-8') txt = f.read() # 构建词云对象w,设置词云图片宽、高、字体、背景颜色等参数 w = wordcloud.WordCloud(width=1000, height=700, background_color='white', font_path='msyh.ttc') # 将txt变量传入w的generate()方法,给词云输入文字 w.generate(txt) # 将词云图片导出到当前文件夹 w.to_file('output3-sentence.png')分词后在生成词云

此处举例基于中文分词工具包jieba

由于wordcloud库在绘制词云时generate()方法要求传入的参数(即文本)为以空格分隔的词组成的字符串。因此再对文本进行处理时需要注意将完整的中文字符串转换成以空格分隔的词组成的字符串

示例代码如下

>>> import jieba >>> textlist = jieba.lcut('动力学和电磁学') >>> textlist ['动力学', '和', '电磁学'] >>> string = " ".join(textlist) >>> string '动力学 和 电磁学'

此时词云生成的示例代码如下

# 导入词云制作库wordcloud和中文分词库jieba import jieba import wordcloud # 构建并配置词云对象w w = wordcloud.WordCloud(width=1000, height=700, background_color='white', font_path='msyh.ttc') # 调用jieba的lcut()方法对原始文本进行中文分词,得到string txt = '同济大学(Tongji University),简称“同济”,是中华人民共和国教育部直属,由教育部、国家海洋局和上海市共建的全国重点大学,历史悠久、声誉卓著,是国家“双一流”、“211工程”、“985工程”重点建设高校,也是收生标准最严格的中国大学之一' txtlist = jieba.lcut(txt) string = " ".join(txtlist) # 将string变量传入w的generate()方法,给词云输入文字 w.generate(string) # 将词云图片导出到当前文件夹 w.to_file('output4-tongji.png')高级词云示例从外部文件导入文本,jieba分词,生成词云# 导入词云制作库wordcloud和中文分词库jieba import jieba import wordcloud # 构建并配置词云对象w w = wordcloud.WordCloud(width=1000, height=700, background_color='white', font_path='msyh.ttc') # 对来自外部文件的文本进行中文分词,得到string f = open('关于实施乡村振兴战略的意见.txt',encoding='utf-8') txt = f.read() txtlist = jieba.lcut(txt) string = " ".join(txtlist) # 将string变量传入w的generate()方法,给词云输入文字 w.generate(string) # 将词云图片导出到当前文件夹 w.to_file('output5-village.png')指定特定形状的词云# 导入词云制作库wordcloud和中文分词库jieba import jieba import wordcloud # 导入imageio库中的imread函数,并用这个函数读取本地图片,作为词云形状图片 import imageio mk = imageio.imread("wujiaoxing.png") w = wordcloud.WordCloud(mask=mk) # 构建并配置词云对象w,注意要加scale参数,提高清晰度 w = wordcloud.WordCloud(width=1000, height=700, background_color='white', font_path='msyh.ttc', mask=mk, scale=15) # 对来自外部文件的文本进行中文分词,得到string f = open('关于实施乡村振兴战略的意见.txt',encoding='utf-8') txt = f.read() txtlist = jieba.lcut(txt) string = " ".join(txtlist) # 将string变量传入w的generate()方法,给词云输入文字 w.generate(string) # 将词云图片导出到当前文件夹 w.to_file('output6-village.png')去除部分词后的词云—— 使用stopwords参数去除词# 导入词云制作库wordcloud和中文分词库jieba import jieba import wordcloud # 导入imageio库中的imread函数,并用这个函数读取本地图片,作为词云形状图片 import imageio mk = imageio.imread("chinamap.png") # 构建并配置词云对象w,注意要加stopwords集合参数,将不想展示在词云中的词放在stopwords集合里,这里去掉“曹操”和“孔明”两个词 w = wordcloud.WordCloud(width=1000, height=700, background_color='white', font_path='msyh.ttc', mask=mk, scale=15, stopwords={'曹操','孔明'}) # 对来自外部文件的文本进行中文分词,得到string f = open('threekingdoms.txt',encoding='utf-8') txt = f.read() txtlist = jieba.lcut(txt) string = " ".join(txtlist) # 将string变量传入w的generate()方法,给词云输入文字 w.generate(string) # 将词云图片导出到当前文件夹 w.to_file('output8-threekingdoms.png')勾勒轮廓线# 导入词云制作库wordcloud import wordcloud # 将外部文件包含的文本保存在string变量中 string = open('hamlet.txt').read() # 导入imageio库中的imread函数,并用这个函数读取本地图片,作为词云形状图片 import imageio mk = imageio.imread("alice.png") # 构建词云对象w,注意增加参数contour_width和contour_color设置轮廓宽度和颜色 w = wordcloud.WordCloud(background_color="white", mask=mk, contour_width=1, contour_color='steelblue') # # 将string变量传入w的generate()方法,给词云输入文字 w.generate(string) # 将词云图片导出到当前文件夹 w.to_file('output9-contour.png')按模板填色# 导入绘图库matplotlib和词云制作库wordcloud import matplotlib.pyplot as plt from wordcloud import WordCloud,ImageColorGenerator # 将外部文件包含的文本保存在text变量中 text = open('alice.txt').read() # 导入imageio库中的imread函数,并用这个函数读取本地图片queen2.jfif,作为词云形状图片 import imageio mk = imageio.imread("alice_color.png") # 构建词云对象w wc = WordCloud(background_color="white", mask=mk,) # 将text字符串变量传入w的generate()方法,给词云输入文字 wc.generate(text) # 调用wordcloud库中的ImageColorGenerator()函数,提取模板图片各部分的颜色 image_colors = ImageColorGenerator(mk) # 显示原生词云图、按模板图片颜色的词云图和模板图片,按左、中、右显示 fig, axes = plt.subplots(1, 3) # 最左边的图片显示原生词云图 axes[0].imshow(wc) # 中间的图片显示按模板图片颜色生成的词云图,采用双线性插值的方法显示颜色 axes[1].imshow(wc.recolor(color_func=image_colors), interpolation="bilinear") # 右边的图片显示模板图片 axes[2].imshow(mk, cmap=plt.cm.gray) for ax in axes: ax.set_axis_off() plt.show() # 给词云对象按模板图片的颜色重新上色 wc_color = wc.recolor(color_func=image_colors) # 将词云图片导出到当前文件夹 wc_color.to_file('output10-alice.png')情感分析词云# 导入词云制作库wordcloud和中文分词库jieba import jieba import wordcloud # 导入imageio库中的imread函数,并用这个函数读取本地图片,作为词云形状图片 import imageio mk = imageio.imread("chinamap.png") # 构建并配置两个词云对象w1和w2,分别存放积极词和消极词 w1 = wordcloud.WordCloud(width=1000, height=700, background_color='white', font_path='msyh.ttc', mask=mk, scale=15) w2 = wordcloud.WordCloud(width=1000, height=700, background_color='white', font_path='msyh.ttc', mask=mk, scale=15) # 对来自外部文件的文本进行中文分词,得到积极词汇和消极词汇的两个列表 f = open('三体黑暗森林.txt',encoding='utf-8') txt = f.read() txtlist = jieba.lcut(txt) positivelist = [] negativelist = [] # 下面对文本中的每个词进行情感分析,情感>0.96判为积极词,情感 0.96: positivelist.append(each) elif feeling < 0.06: negativelist.append(each) else: pass # 将积极和消极的两个列表各自合并成积极字符串和消极字符串,字符串中的词用空格分隔 positive_string = " ".join(positivelist) negative_string = " ".join(negativelist) # 将string变量传入w的generate()方法,给词云输入文字 w1.generate(positive_string) w2.generate(negative_string) # 将积极、消极的两个词云图片导出到当前文件夹 w1.to_file('output12-positive.png') w2.to_file('output12-negative.png') print('词云生成完成')《三国演义》人物阵营分色词云

即不同的人物绘制不同的颜色以表示不同的阵营

# 导入wordcloud库,并定义两个函数 from wordcloud import (WordCloud, get_single_color_func) class SimpleGroupedColorFunc(object): """Create a color function object which assigns EXACT colors to certain words based on the color to words mapping Parameters ---------- color_to_words : dict(str -> list(str)) A dictionary that maps a color to the list of words. default_color : str Color that will be assigned to a word that's not a member of any value from color_to_words. """ def __init__(self, color_to_words, default_color): self.word_to_color = {word: color for (color, words) in color_to_words.items() for word in words} self.default_color = default_color def __call__(self, word, **kwargs): return self.word_to_color.get(word, self.default_color) class GroupedColorFunc(object): """Create a color function object which assigns DIFFERENT SHADES of specified colors to certain words based on the color to words mapping. Uses wordcloud.get_single_color_func Parameters ---------- color_to_words : dict(str -> list(str)) A dictionary that maps a color to the list of words. default_color : str Color that will be assigned to a word that's not a member of any value from color_to_words. """ def __init__(self, color_to_words, default_color): self.color_func_to_words = [ (get_single_color_func(color), set(words)) for (color, words) in color_to_words.items()] self.default_color_func = get_single_color_func(default_color) def get_color_func(self, word): """Returns a single_color_func associated with the word""" try: color_func = next( color_func for (color_func, words) in self.color_func_to_words if word in words) except StopIteration: color_func = self.default_color_func return color_func def __call__(self, word, **kwargs): return self.get_color_func(word)(word, **kwargs) # 导入imageio库中的imread函数,并用这个函数读取本地图片,作为词云形状图片 import imageio mk = imageio.imread("chinamap.png") w = WordCloud(width=1000, height=700, background_color='white', font_path='msyh.ttc', mask=mk, scale=15, max_font_size=60, max_words=20000, font_step=1) import jieba # 对来自外部文件的文本进行中文分词,得到string f = open('三国演义.txt',encoding='utf-8') txt = f.read() txtlist = jieba.lcut(txt) string = " ".join(txtlist) # 将string变量传入w的generate()方法,给词云输入文字 w.generate(string) # 创建字典,按人物所在的不同阵营安排不同颜色,绿色是蜀国,橙色是魏国,紫色是东吴,粉色是诸侯群雄 color_to_words = { 'green': ['刘备','刘玄德','孔明','诸葛孔明', '玄德', '关公', '玄德曰','孔明曰', '张飞', '赵云','后主', '黄忠', '马超', '姜维', '魏延', '孟获', '关兴','诸葛亮','云长','孟达','庞统','廖化','马岱'], 'red': ['曹操', '司马懿', '夏侯', '荀彧', '郭嘉','邓艾','许褚', '徐晃','许诸','曹仁','司马昭','庞德','于禁','夏侯渊','曹真','钟会'], 'purple':['孙权','周瑜','东吴','孙策','吕蒙','陆逊','鲁肃','黄盖','太史慈'], 'pink':['董卓','袁术','袁绍','吕布','刘璋','刘表','貂蝉'] } # 其它词语的颜色 default_color = 'gray' # 构建新的颜色规则 grouped_color_func = GroupedColorFunc(color_to_words, default_color) # 按照新的颜色规则重新绘制词云颜色 w.recolor(color_func=grouped_color_func) # 将词云图片导出到当前文件夹 w.to_file('output13-threekingdoms.png')

本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。 收藏 评论 分享 举报

上一篇:88pmp bios 最佳 设置 a88主板bios

下一篇:docker搭建hadoop和hive集群 docker搭建hadoop集群遇到的问题



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭