Python pyecharts绘制词云图代码

  

下面是Python pyecharts绘制词云图的完整攻略:

简介

pyecharts(Python echarts)是一款基于Echarts语法的Python可视化库,支持多种可视化类型的展示,其中就包括了词云图(WordCloud)。

准备工作:

  1. 安装pyecharts库

pip install pyecharts

  1. 从所需爬取的文本中获取分词

pyecharts中的WordCloud要求传入一份分好词的词频数据,故我们需要将文本进行分词。可以使用Python中常用的分词库如jieba库进行分词实现,示例代码:

```python
import jieba

text = "Python是一门非常流行的编程语言,它简洁易学,使用广泛。"
# 通过jieba库进行中文分词,返回分词结果,类型为列表
seg_list = jieba.lcut(text, cut_all=False)
print(seg_list)
# 输出结果:['Python', '是', '一门', '非常', '流行', '的', '编程语言', ',', '它', '简洁', '易学', ',', '使用', '广泛', '。']
```

代码实现:

以下代码实现了根据传入的词频数据生成词云图的功能,在调用WordCloud()时,需要传入一个字典类型的数据,其中以词语为键,以词频为值(如:{'Python': 10, '编程': 5}),表示该词语在文本中出现的频率:

from pyecharts import options as opts
from pyecharts.charts import WordCloud

# 传入的词频数据,类型为字典
word_freq = {
    'Python': 10,
    '编程': 5,
    '语言': 7,
    '数据分析': 3,
    '机器学习': 4,
    '可视化': 2
}

# 生成词云图,并设置词云图的样式
wordcloud = (
    WordCloud(init_opts=opts.InitOpts(width='800px', height='400px'))
    .add(series_name='', data_pair=word_freq.items(), word_gap=10, rotate_step=90, shape='roundRect')
    .set_global_opts(
        title_opts=opts.TitleOpts(title='词云图'),
        tooltip_opts=opts.TooltipOpts(is_show=True),
        visualmap_opts=opts.VisualMapOpts(max_=10),
    )
    .render(path='wordcloud.html')
)

示例说明:

下面演示两个实际应用的案例:

  1. 网络爬虫爬取词频数据

使用Python官方库的urllib进行网络爬虫,获取网络信息,并使用jieba库进行分词,代码如下:

```python
import urllib.request
import jieba

url = "http://news.sina.com.cn/"
response = urllib.request.urlopen(url)
html = response.read()
# 利用正则表达式提取文本内容
import re
pattern = re.compile(r'<[^>]+>', re.S)
content = pattern.sub('', html.decode())
# 使用jieba库进行分词
seg_list = jieba.lcut(content, cut_all=True)
word_freq = {}
for word in seg_list:
if len(word) > 1: # 去掉单个的字
word_freq[word] = word_freq.get(word, 0) + 1
```

将所获得的分词结果作为数据项传入到WordCloud中,即可生成网络新闻页面的词云图。

  1. 从CSV文件中读取词频数据

利用Python内置的csv库读取CSV文件中的数据,并将其存储为字典,代码如下:

```python
import csv

with open('word_freq.csv', 'r', encoding='utf-8') as f:
csv_reader = csv.reader(f)
word_freq = {}
for row in csv_reader:
word_freq[row[0]] = int(row[1])
```

将所获得的分词结果作为数据项传入到WordCloud中,即可生成CSV中的词云图。

结论

pyecharts库在各类数据可视化中都有着十分出色的表现,特别是在设计词云图方面更是如此,只需要几行代码即可制作出复杂、美观的词云图,并且支持多种图形效果的设置和自定义。

相关文章