python词云模糊_用Python和WordCloud绘制词云(内附让字体清晰的秘笈)

环境及模块:

Win7 64位

Python 3.6.4

WordCloud 1.5.0

Pillow 5.0.0

Jieba 0.39

目标:

绘制安徽省2018年某些科技项目的词云,直观展示热点。

思路:

先提取项目的名称,再用Jieba分词后提取词汇;过滤掉“研发”、“系列”等无意义的词;最后用WordCloud 绘制词云。

扩展:

词云默认是矩形的,本代码采用图片作为蒙版,产生异形词云图。这里用的图片是安徽省地图。

秘笈:

用网上的常规方法绘制的词云,字体有点模糊,秘笈在最后点明。

正式开始,Show you the code:

1 importnumpy as np2 from PIL importImage3 importre4 importjieba5 from wordcloud importWordCloud,ImageColorGenerator,STOPWORDS6 importmatplotlib.pyplot as plt7 # http://www.cnblogs.com/hatemath/

8 #打开存放项目名称的txt文件

9 with open(‘content.txt‘,‘r‘,encoding=‘utf-8‘) as f:10 word=(f.read())11 f.close()12

13 #图片模板和字体

14 image=np.array(Image.open(‘ditu.jpg‘))15 font=r‘C:\\Windows\\fonts\\msyh.ttf‘

16

17 #去掉英文,保留中文

18 resultword=re.sub("[A-Za-z0-9\[\`\~\!\@\#\$\^\&\*\(\)\=\|\{\}\‘\:\;\‘\,\[\]\.\\/\?\~\。\@\#\\\&\*\%]", "",word)19 wordlist_after_jieba =jieba.cut(resultword)20 wl_space_split = " ".join(wordlist_after_jieba)21

22 #设置停用词

23 sw =set(STOPWORDS)24 sw.add("研发")25 sw.add("系列")26 sw.add("这里不多写了,根据自己情况添加")27

28 #关键一步

29 my_wordcloud = WordCloud(scale=4,font_path=font,mask=image,stopwords=sw,background_color=‘white‘,30 max_words = 100,max_font_size = 60,random_state=20).generate(wl_space_split)31

32 #显示生成的词云

33 plt.imshow(my_wordcloud)34 plt.axis("off")35 plt.show()36

37 #保存生成的图片

38 my_wordcloud.to_file(‘result.jpg‘)

其中 ditu.jpg 为安徽省轮廓图片:

81246ee60c188d803480a9b0bb831760.png

运行结果:

a4b5caa80ba6837e59a57c40fa0e0a94.png

可以看到,智能设备、施工工法、系统平台、电缆、机器人等都是出现较多的词汇。

最后是秘笈揭晓时间:

为什么我这张图如此清晰?打开原图可以看到,这图的分辨率是1800*2500。你用网上的大多数代码,最后生成的图,尺寸很小,上面字迹边缘模糊。

关键在于调用WordCloud时的一个参数,回放一下代码:

1 #关键一步

2 my_wordcloud = WordCloud(scale=4,font_path=font,mask=image,stopwords=sw,background_color=‘white‘,3 max_words = 100,max_font_size = 60,random_state=20).generate(wl_space_split)

第一个参数我写的是 scale=4,这个数值越大,产生的图片分辨率越高,字迹越清晰。你可以调到64试试,我希望你的电脑足够快 /笑哭

本文由hATEmATH原创 转载请注明出处:http://www.cnblogs.com/hatemath/

原文:https://www.cnblogs.com/hatemath/p/10238145.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/557624.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

shiro框架,自定义realm注入service失败解决办法

shiro框架,自定义realm注入service失败解决办法 报错如下: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘shiroFilter’ defined in ServletContext resource [/WEB-INF/config/spring-shrio.xml]: Cannot resolve reference …

MySQL建立多选一列表_如何实现自定义列表的多个item,的单选或多选

展开全部自定义ListView item中包含一个e69da5e6ba903231313335323631343130323136353331333337376333textview 和checkbox,checkbox选中级别高于item,故在xml中进行屏蔽单选方法:(该方法同样适用于radiobutton)main.xmlandroid:layout_width"match_parent"android:l…

spring的bean不能注入的几种原因及分析

1、异常信息 2.有可能引起的原因: 1、在applicationContext.xml的配置文件里的包扫描不对。 2、在web.xml里没有加载spring容器。 3、分布式工程,使用dubbo或者hsf通信,在服务层,或者消费层,单词写错了。 4、还有一种可能&am…

python后端需要什么基础_【后端开发】python爬虫需要什么基础

入手爬虫确实不要求你精通Python编程,但基础知识还是不能忽视的,那么我们需要哪些Python基础呢?首先我们先来看看一个最简单的爬虫流程:第一步要确定爬取页面的链接,由于我们通常爬取的内容不止一页,所以要…

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyR

异常信息: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2 at org.mybatis.spring.MyBatisExceptionTransl…

java xms512m_安装版的tomcat设置JAVA_OPTS=-Xms128M -Xmx512M -XX:PermSize=128M -XX:MaxPermSize=512M...

tomcat如果是通过windows服务启动,执行的是bin\tomcat.exe.他读取注册表中的值,而不是catalina.bat的设置.解决办法:修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat6\Parameters\JavaOptions原值为-Dcatalina.homeE:\Tomcat…

异常信息java.lang.Object.wait(Native Method) java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:

在写springboot项目时出现了一个这样的错误!! ava.lang.Object.wait(Native Method) java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143) com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:43) …

Error querying database. Cause: java.lang.UnsupportedOperationException

mybatis抛出以下异常: Error querying database. Cause: java.lang.UnsupportedOperationException 对应语句如下: select distinct code from ssj_dictionary 错误原因是 resultType“java.util.List” ,这里应该改成: result…

从java多态到策略模式_设计模式中的多态——策略模式详解

2. 策略模式详解2.1 策略模式定义策略模式定义了一系列算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户端而独立的变化。可以使用多态进行类比来理解策略模式的定义。一系列算法可以理解成接口的不同实现类,因为不同实现类…

linux服务器安装zookeeper本地项目远程连接

linux服务器安装zookeeper本地项目远程连接 zookeeper linux 服务器安装,本地idea连接 先决条件:一台linux服务器,服务器里面已经安装好java环境(安装Java看这里:https://blog.csdn.net/qq_43842093/article/details…

修改linux远程主机名命令hostname

hostname命令 用这个命令:之后重新登录

zookeeper下载安装过程

1.1 下载安装 1、环境准备 ZooKeeper服务器是用Java创建的,它运行在JVM之上。需要安装JDK 7或更高版本。 2、上传 将下载的ZooKeeper放到/opt/ZooKeeper目录下 #上传zookeeper altp put f:/setup/apache-zookeeper-3.5.6-bin.tar.gz #打开 opt目录 cd /opt #创…

java 计算反码_java基础知识-原码、反码、补码、运算符

一、原码、反码、补码原码一个数转化成二进制。用最高位来表示正负,最高位为0表示正数,最高位为1表示负数。例如:short i5;因为在java里short占2个字节转化成二进制就是 00000000 00000101所以 00000000 00000101就是5的原码short…

dubbo-admin安装和简单使用

一、dubbo-admin安装 1、环境准备 dubbo-admin 是一个前后端分离的项目。前端使用vue,后端使用springboot,安装 dubbo-admin 其实就是部署该项目。我们将dubbo-admin安装到开发环境上。要保证开发环境有jdk,maven,nodejs 安装n…

java 文件流 重写_java中关于文件流的总结

[File类]1、 作用: 用于对磁盘文件进行操作。 删除、创建等。2、 三种常用的构造函数:① File file1 new File("F:\\test");直接传入一个路径,拿到一个文件或者是文件夹。② File file2 new File("F:\\test","tes…

java程序的加载顺序_Java类的加载顺序

问题昨天有人问我一个类中有静态方法,有静态代码块,普通代码块,构造函数,普通方法,静态方法,那么它们的加载顺序是什么?如果有之类继承该类,也有如上的方法,那么加载顺序…

java.lang.Thread类详解,yield方法,join方法,interrupt方法,interrupted方法,destroy方法

一、前言 位于java.lang包下的Thread类是非常重要的线程类,它实现了Runnable接口,今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知识:线程的几种状态、上下文切换,然后接着介绍Thread类…

git stash 缓存 简介

当我们在使用git的时候,又是会有这种情况:当新的需求了的时候。我们需要为此需求新建一个分支,再次分支上进行修改,当经过测试,提交代码时,在将其合并到主分支,或生产分支上。 但是有时候也有失…

java中的线程池有哪些,分别有什么作用?

java中的线程池有哪些,分别有什么作用? 1.进程-线程简单介绍 2.java的线程池是什么,有哪些类型,作用分别是什么 3.使用线程池的优点 1.进程-线程的简单介绍 进程 什么是进程呢? 进程是计算机中的程序关于某数据集合…

线程安全的集合类有哪些?

验证ArrayList线程不安全 ArrayList 应当是开发中用到的最多的集合类,是动态列表,List 接口的实现类。 多数情况下,我们实在单线程环境使用,或者是在方法内部,以局部变量的形式使用,一般不会出现线程安全问…