Python中使用WordCloud库生成中国地图词云
发布时间:2023-12-17 00:53:19
在Python中使用WordCloud生成中国地图词云需要以下步骤:
1. 安装WordCloud库:
pip install wordcloud
2. 导入所需的库:
import jieba from wordcloud import WordCloud import matplotlib.pyplot as plt from PIL import Image
3. 准备数据:
为了生成地图词云,我们需要准备一个包含地理位置信息与对应词频的数据集。例如,可以使用一个包含中国各个省份/城市的信息的CSV文件。假设CSV文件的格式为:
省份/城市,词频 北京,100 上海,80 广东,60 ...
首先,使用pandas库读取CSV文件并将数据转换为字典格式:
import pandas as pd
df = pd.read_csv('data.csv')
data = df.set_index('省份/城市').to_dict()['词频']
4. 构建词云:
在构建词云之前,我们需要一个表示中国地图形状的PNG图片。我们可以从网络上下载一个相应的图片。然后,使用PIL库将PNG图片转换为适用于WordCloud库的形状(mask):
mask = np.array(Image.open('map.png'))
接下来,使用jieba库将文本分割成单词:
text = ' '.join(jieba.cut(' '.join(data.keys()), cut_all=False))
最后,创建WordCloud对象并生成词云:
wc = WordCloud(
font_path='simhei.ttf', # 使用中文字体
background_color='white', # 背景色
mask=mask, # 词云形状
contour_color='steelblue', # 轮廓线颜色
contour_width=1 # 轮廓线宽度
).generate_from_frequencies(data)
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
完整代码如下:
import pandas as pd
import numpy as np
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from PIL import Image
# 读取CSV文件并将数据转换为字典格式
df = pd.read_csv('data.csv')
data = df.set_index('省份/城市').to_dict()['词频']
# 读取中国地图PNG图片并转换为适用于WordCloud库的形状(mask)
mask = np.array(Image.open('map.png'))
# 将文本分割成单词
text = ' '.join(jieba.cut(' '.join(data.keys()), cut_all=False))
# 创建WordCloud对象并生成词云
wc = WordCloud(
font_path='simhei.ttf', # 使用中文字体
background_color='white', # 背景色
mask=mask, # 词云形状
contour_color='steelblue', # 轮廓线颜色
contour_width=1 # 轮廓线宽度
).generate_from_frequencies(data)
# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
请确保已经在当前目录下准备好了以下文件:
- data.csv:包含地理位置信息与对应词频的CSV文件
- simhei.ttf:中文字体文件
- map.png:中国地图的PNG图片
通过运行上述代码,将会生成一个中国地图词云,其中地理位置的大小根据对应词频而改变。
