parent
83cfe3156b
commit
6e87b23c54
@ -0,0 +1,59 @@
|
||||
import pandas as pd
|
||||
from PIL import Image
|
||||
import numpy as np
|
||||
import jieba
|
||||
from wordcloud import WordCloud
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
|
||||
def generate_beautiful_wordcloud(file_name='ai_danmaku_statistics.xlsx', mask_image_path=None,font_path=r"C:\Users\wyk93\Desktop\苹方黑体-准-简.ttf"):
|
||||
# 读取 Excel 文件
|
||||
df = pd.read_excel(file_name)
|
||||
|
||||
# 合并所有弹幕内容为一个大字符串
|
||||
text = ' '.join(df['弹幕内容'].dropna().astype(str))
|
||||
|
||||
# 使用 jieba 进行分词
|
||||
seg_list = jieba.cut(text, cut_all=True)
|
||||
segmented_text = " ".join(seg_list)
|
||||
|
||||
# # 打印合并后的文本以检查内容
|
||||
# print("Text content:")
|
||||
# print(text[:500]) # 打印前500个字符以检查
|
||||
|
||||
# 读取自定义形状图片
|
||||
if mask_image_path:
|
||||
mask_image = np.array(Image.open(mask_image_path).convert('L'))
|
||||
mask_image[mask_image > 200] = 255
|
||||
mask_image[mask_image <= 200] = 0
|
||||
else:
|
||||
mask_image = None
|
||||
|
||||
background_image = Image.open(mask_image_path)
|
||||
|
||||
# 创建词云对象
|
||||
wordcloud = WordCloud(
|
||||
background_color='white',# 透明背景
|
||||
mask=mask_image,
|
||||
contour_color=None,
|
||||
contour_width=2,
|
||||
width=2000, # 词云图的宽度
|
||||
height=2000, # 词云图的高度
|
||||
colormap='viridis' , # 使用 'viridis' 颜色映射
|
||||
max_words=20000,
|
||||
# min_font_size=10,
|
||||
# max_font_size=100,
|
||||
# prefer_horizontal=0.9, # 更高的水平优先级
|
||||
font_path=font_path # 如果需要显示中文,需要指定中文字体路径
|
||||
).generate(segmented_text) # 这里替换为你自己的文本数据
|
||||
|
||||
# 显示词云图
|
||||
plt.figure(figsize=(10, 8))
|
||||
plt.imshow(background_image, interpolation='bilinear')
|
||||
plt.imshow(wordcloud, interpolation='bilinear', alpha=0.4) # 设置透明度
|
||||
plt.axis('off') # 不显示坐标轴
|
||||
plt.show()
|
||||
|
||||
# 调用函数生成词云
|
||||
# 可选: 使用自定义形状的掩膜图像
|
||||
generate_beautiful_wordcloud(mask_image_path=r"C:\Users\wyk93\Desktop\图片素材\sucai3.jpg")
|
Loading…
Reference in new issue