这篇文章将为大家详细讲解有关Python如何制作圣诞树和圣诞树词云,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
一、前言
圣诞节庆祝和送礼物貌似现在已经成为全球流行的习惯~
本文利用 Python 制作圣诞树和词云,教会你多种方法,代码直接运行即可,学会拿去送给你想要祝福的人吧~~
二、Python画圣诞树
1. 圣诞树1号
# -*- coding: UTF-8 -*-"""@Author :叶庭云@公众号 :AI庭云君@CSDN :https://yetingyun.blog.csdn.net/"""import turtlescreen = turtle.Screen()screen.setup(800, 600)circle = turtle.Turtle()circle.shape('circle')circle.color('red')circle.speed('fastest')circle.up()square = turtle.Turtle()square.shape('square')square.color('green')square.speed('fastest')square.up()circle.goto(0, 280)circle.stamp()k, j = 0, 0for i in range(1, 17): y = 30 * i for j in range(i - k): x = 30 * j square.goto(x, -y + 280) square.stamp() square.goto(-x, -y + 280) square.stamp() if i % 4 == 0: x = 30 * (j + 1) circle.color('red') circle.goto(-x, -y + 280) circle.stamp() circle.goto(x, -y + 280) circle.stamp() k += 2 if i % 4 == 3: x = 30 * (j + 1) circle.color('yellow') circle.goto(-x, -y + 280) circle.stamp() circle.goto(x, -y + 280) circle.stamp()square.color('brown')for i in range(17, 20): y = 30 * i for j in range(3): x = 30 * j square.goto(x, -y + 280) square.stamp() square.goto(-x, -y + 280) square.stamp() turtle.mainloop()
效果如下:
2. 圣诞树2号
# -*- coding: UTF-8 -*-"""@Author :叶庭云@公众号 :AI庭云君@CSDN :https://yetingyun.blog.csdn.net/"""from turtle import *import turtleimport randomn = 100.0speed(96)turtle.setup(width=800, height=720)# 用screensize设置的是画布大小及背景色screensize(800, 800, "White")left(90)forward(3 * n)color("red", "yellow") # 五角星的颜色begin_fill()left(126)for i in range(5): forward(n / 5) right(144) forward(n / 5) left(72)end_fill()right(126)# 圣诞树颜色color("#00CC00")backward(n * 4.8)def tree(d, s): if d <= 0: return forward(s) tree(d - 1, s * .8) right(120) tree(d - 3, s * .5) right(120) tree(d - 3, s * .5) right(120) backward(s)tree(15, n)backward(n / 2)for i in range(200): a = 200 - 400 * random.random() b = 10 - 20 * random.random() up() forward(b) left(90) forward(a) down() if random.randint(0, 1) == 0: color('#FF0066') else: color('#FF6600') circle(2) up() backward(a) right(90) backward(b)turtle.mainloop()
效果如下:
还可以更改背景,加上下雪特效!如下所示:
# 画雪花关键代码def drawsnow(): # 定义画雪花的方法 t.ht() # 隐藏笔头,ht=hideturtle t.pensize(2) # 定义笔头大小 for i in range(200): # 画多少雪花 t.pencolor("white") # 定义画笔颜色为白色,其实就是雪花为白色 t.pu() # 提笔,pu=penup t.setx(r.randint(-350, 350)) # 定义x坐标,随机从-350到350之间选择 t.sety(r.randint(-100, 350)) # 定义y坐标,注意雪花一般在地上不会落下,所以不会从太小的纵座轴开始 t.pd() # 落笔,pd=pendown dens = 6 # 雪花瓣数设为6 snowsize = r.randint(1, 10) # 定义雪花大小 for j in range(dens): # 就是6,那就是画5次,也就是一个雪花五角星 # t.forward(int(snowsize)) #int()取整数 t.fd(int(snowsize)) t.backward(int(snowsize)) # t.bd(int(snowsize)) #注意没有bd=backward,但有fd=forward,小bug t.right(int(360 / dens)) # 转动角度drawsnow() # 调用画雪花的方法
3. 圣诞树3号
画一颗漂亮的圣诞树!!代码过长,限于篇幅不贴在文中,效果如下所示:
三、Python制作圣诞树词云
做词云得有关键词素材,这就去百度文库高校版下载一些圣诞祝福文章~~
12篇差不多够了吧
接下来上 Python 代码!!!!!!
# -*- coding: UTF-8 -*-"""@Author : 叶庭云@公众号 : AI庭云君@CSDN : https://yetingyun.blog.csdn.net/"""import jiebaimport refrom stylecloud import gen_stylecloudfrom PIL import Imageimport numpy as npwith open('./圣诞素材/Christmas.txt', encoding="utf-8") as f: data = f.read()# 文本预处理 去除一些无用的字符 只提取出中文出来new_data = re.findall('[\u4e00-\u9fa5]+', data, re.S)new_data = "/".join(new_data)# 文本分词 精确模式seg_list_exact = jieba.cut(new_data, cut_all=False)# 加载停用词with open('stop_words.txt', encoding='utf-8') as f: # 获取每一行的停用词 添加进集合 con = f.read().split('\n') stop_words = set() for i in con: stop_words.add(i)# 列表解析式 去除停用词和单个词result_list = [word for word in seg_list_exact if word not in stop_words and len(word) > 1]print(result_list)# 个人推荐使用的palette配色方案 效果挺好看 其他测试过 感觉一般~~# colorbrewer.qualitative.Dark2_7# cartocolors.qualitative.Bold_5# colorbrewer.qualitative.Set1_8gen_stylecloud( text=' '.join(result_list), # 文本数据 size=600, # 词云图大小 font_path=r'./font/猫啃网糖圆体.ttf', # 中文词云 显示需要设置字体 icon_name = "fas fa-tree", # 图标 output_name='./results/圣诞树06.png', # 输出词云图名称 palette='cartocolors.qualitative.Bold_5', # 选取配色方案)
效果如下所示:
四、彩蛋
在逛 Gitee 上还发现有人上传了 exe 可以直接生成圣诞树(貌似是C#做的?),效果如下所示:
关于“Python如何制作圣诞树和圣诞树词云”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。