掌握一项装逼的技能

2021-03-27 16:12:45 浏览数 (2)

一款制作词云的软件!

01、什么是词云?

我们要制作词云,那什么是词云呢?

【中文】词云。又称文字云。

【英文】wordle

【释义】由词汇组成类似云的彩色图形。

还是不懂吗?那来看一下具体事例:

02、代码实现

怎么样!是不是很不错,是不是有点小心动,请压抑住心中的躁动,不要急,慢慢来。

首先,是词云的代码实现:

1.需要使用到的模块:

pip install jieba(结巴)#真搞不懂写这个模块的人,怎么用拼音来写,这个模块有点容易让人误解,加注释

pip install wordcloud

注:在安装时可能会出现错误,需要使用其他环境,在文章后面获取连接。

pip install scipy

pip install matplotlib

代码语言:javascript复制
import jieba.analyse
from wordcloud import WordCloud,ImageColorGenerator
from scipy.misc import imread
import matplotlib.pyplot as plt
from tkinter import *

2.生成词云代码实现:

代码语言:javascript复制
class wc:
   def __init__(self,txt_file,img_file,font_file):
      self.txt = open(txt_file,'r').read()
      self.tags = jieba.analyse.extract_tags(self.txt,topK=100)
      #topK说白了就是返回几个关键词
    self.text = ' '.join(self.tags) #把分词链接起来,加空格因为英文靠空格分词
    self.img = imread(img_file)
      self.wc = WordCloud(font_path=font_file,background_color='white',max_words=200,mask=self.img,max_font_size=40)
      ###直接在这里进行猜###
      #font_path指的是字体文件路径,因为wordcloud自带的字体不支持中文所以我们要指定一个字体文件,否者输出的图片全是框框
      #background_color 默认是黑色 我设置成白色
      #max_words最大显示的词数
      #mask 背景图片
      #max_font_size 最大字体字号
      self.word_cloud = self.wc.generate(self.text)

   def show_wc(self):
      # img_color = ImageColorGenerator(self.img)
      plt.imshow(self.word_cloud)
      # plt.imshow(self.wc.recolor(color_func=img_color))
      #可以通过 plt.imshow(self.wc.recolor(color_func=img_color))使图片颜色跟字体颜色一样
      plt.axis("off")
      plt.savefig("词云.png")#保存图片
      plt.show()#弹出窗口显示图片

3.用窗口实现:

代码语言:javascript复制
def window(self):
   window = Tk()
   window.title("在线生成词云")
   window.geometry("500x500 500 200")
   Label(window,
            text="在线生成词云",  # 标签的文字
            # bg='green',  # 背景颜色
            font=('楷体', 17),  # 字体和字体大小
            # width=15, height=2  # 标签长宽
            ).grid(row=0, column=0)  # 固定窗口位置
   Label(window,text="请输入文件路径:").grid(row=2, column=0)
   self.a = Text(window, width=40, height=2)
   self.a.insert(1.0,"文件.txt")
   self.a.grid(row=2, column=1)
   Label(window,text="请输入图片路径:").grid(row=3, column=0)
   self.c = Text(window, width=40, height=2)
   self.c.insert(1.0, "图片.jpg")
   self.c.grid(row=3, column=1)
   Button(window, text="生成词云", bg="lightblue", command=self.click).grid(row=4, column=1)
   window.mainloop()

4.点击事件触发,重新调用生成词云的方法

代码语言:javascript复制
def click(self):
   self.f = self.a.get(1.0, END).strip().replace("n", "").encode().decode()
   self.tu = self.c.get(1.0, END).strip().replace("n", "").encode().decode()
   mywc = wc(self.f,self.tu,'STXINGKA.TTF')
   mywc.show_wc()

5.启动运行

代码语言:javascript复制
if __name__=='__main__':
   mywc = wc("文件.txt","图片.jpg",'STXINGKA.TTF')
   mywc.window()

到此,所有的代码编写完成,需要用到的图片,材料,已经打包上传网盘,公众号和后台回复 “词云” 获取源代码,已及图片文件。

0 人点赞