python作爱心词云图

  1. python读取txt文本内容
  2. python获取图片内容
  3. 制作词云图
  • 准备工作
    (1)准备一张清晰的爱心图片
    (2)准备一个txt文件,这个是词云图的文字内容
    在这里插入图片描述
  • 基于python3.7的完整代码
import jieba #中文分词包
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
from os import path

#define the absolute path for directory
d = "C:\\Users\\GXP\\Desktop\\worldcloud"
#path.join实现文件地址的链接,open则打开相应的文件,read则读取相应的文件
text = open(path.join(d, 'love_words.txt')).read()

#if txt contain chinese words, recommand to use jieba model
chtext = ''
with open(path.join(d, 'love_words.txt'),'r') as fin:
    for line in fin.readlines():
        line = line.strip('\n')
        chtext += ' '.join(jieba.cut(line))

#调用包PIL中的open方法,读取图片文件,通过numpy中的array方法生成数组
backgroud_Image = np.array(Image.open(path.join(d, "love.png")))
#停用词可以如下定义,也可以在WordCloud中定义.停用词的增加和删除操作如下
stopwords = set(STOPWORDS) 


#绘制词云图
wc = WordCloud(
    background_color='white',# 设置背景颜色
    mask=backgroud_Image,# 设置背景图片
    font_path='C:\\Windows\\Fonts\\STZHONGS.TTF',  # 若是有中文的话,这句代码必须添加,不然会出现方框,不出现汉字
    max_words=200, # 设置最大现实的字数
    stopwords = STOPWORDS,# 设置停用词,停用词则不再词云图中表示 也可以直接有字符串,设置停用词stopwords = 'to'
    max_font_size=150,# 设置字体最大值
    random_state=1,# 设置有多少种随机生成状态,即有多少种配色方案
    scale = 5#设置生成的词云图的大小
    #regexp = 'to'#设置词语文字段的解析的分隔字段
)

#传入需画词云图的文本,与该方法作用相同generate_from_text(text)
wc.generate(chtext)

# 展示图片
#根据原始背景图片的色调进行上色
image_colors = ImageColorGenerator(backgroud_Image)
plt.imshow(wc.recolor(color_func=image_colors))
#根据原始黑白色调进行上色
#plt.imshow(wc.recolor(color_func=grey_color_func, random_state=3), interpolation='bilinear') #生成黑白词云图
#根据函数原始设置进行上色
#plt.imshow(wc)
 
#隐藏图像坐标轴
plt.axis("off")
plt.show()
 
# 保存生成的词云图
wc.to_file(path.join(d, "gengrate_love_star.png"))
  • 效果图
    在这里插入图片描述
  • End and have a nice day!!!
### 如何用Python生成心形词云图 为了创建一个心形,需要准备聊天记录文本文件,并确保已安装所需的库。可以通过以下命令来安装必要的 Python 库[^2]: ```bash pip install wordcloud matplotlib Pillow numpy ``` 接下来定义绘制心形的具体实现方法。首先导入所需模块并读取聊天记录文本数据。 ```python import numpy as np from PIL import Image from wordcloud import WordCloud, STOPWORDS import matplotlib.pyplot as plt # 加载自定义停用表(可选) stopwords = set(STOPWORDS) # 读入聊天记录文本 text = open('chat_records.txt', 'r').read() ``` 接着构建心形掩码图像,这一步骤对于形成最终的心形图案至关重要。 ```python def create_heart_mask(size=(800, 900)): """ 创建心形蒙版 """ x = np.linspace(-1, 1, size[0]) y = np.linspace(-1.5, 1.5, size[1]) X, Y = np.meshgrid(x, y) heart_shape = (X ** 2 + Y ** 2 - 1) ** 3 - X ** 2 * Y ** 3 <= 0 mask = np.zeros((size[1], size[0])) mask[heart_shape] = 255 return mask.astype(np.uint8) mask = create_heart_mask() # 将numpy数组转换为PIL图像对象以便于后续操 img_coloring = np.array(Image.fromarray(mask).convert('RGB')) ``` 最后设置 `WordCloud` 参数并将结果可视化。 ```python wc = WordCloud( background_color="white", # 设置背景颜色,默认黑色 max_words=2000, # 显示的最大语数量 mask=mask, # 使用自定义图形为遮罩层 stopwords=stopwords, # 去除无意义的常用字 contour_width=3, # 绘制轮廓宽度 contour_color='red' # 轮廓线条的颜色 ) # 生成 wc.generate(text) plt.figure(figsize=(10, 10)) plt.imshow(wc, interpolation='bilinear') plt.axis("off") # 关闭坐标轴显示 plt.show() # 展示图片 ``` 通过上述代码片段能够成功地基于给定的文字资料生成具有心形外观特征的频统计图表[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值