背景
作为一名小白选手,我们学习Python的时候,基本上都是先从基础学起,那当我们基础学完的时候,总想要实践一下,做个小功能来锻炼下自己,那今天我们先从做个跳动的爱心开始挑战吧,效果图如下:
实战操作
- 安装两个依赖库numpy库和matplotlib库,numpy库来生成心形曲线的坐标点,matplotlib 用来绘制图形。
pip3 install matplotlib
pip3 install numpy
- 新建Python空白文件heartbeat.py,打开后首先导入上面安装的两个库。
import matplotlib.pyplot as plt
import numpy as np
- 创建一个新的图形窗口
fig, ax = plt.subplots()
- 设置画布背景颜色
fig.patch.set_facecolor('black')
- 定义一个函数来绘制爱心
def draw_heart(scale):
t = np.linspace(0, 2 * np.pi, 1000)
x = 16 * np.sin(t) ** 3
y = 13 * np.cos(t) - 5 * np.cos(2 * t) - 2 * np.cos(3 * t) - np.cos(4 * t)
# 使用 `ax.fill` 方法来填充爱心的轮廓,从而实现实心的效果。
ax.fill(scale * x, scale * y, color='red')
- 循环绘制跳动的爱心
while True:
# 放大爱心
for scale in np.linspace(1, 10, 20):
ax.clear()
draw_heart(scale)
plt.xlim(-200, 200)
plt.ylim(-200, 200)
plt.axis('off')
plt.pause(0.1)
# 缩小爱心
for scale in np.linspace(10, 1, 20):
ax.clear()
draw_heart(scale)
plt.xlim(-200, 200)
plt.ylim(-200, 200)
plt.axis('off')
plt.pause(0.1)
- 附上完成代码:
import matplotlib.pyplot as plt
import numpy as np
# 创建一个新的图形窗口
fig, ax = plt.subplots()
# 设置画布背景颜色
fig.patch.set_facecolor('black')
# 定义一个函数来绘制爱心
def draw_heart(scale):
t = np.linspace(0, 2 * np.pi, 1000)
x = 16 * np.sin(t) ** 3
y = 13 * np.cos(t) - 5 * np.cos(2 * t) - 2 * np.cos(3 * t) - np.cos(4 * t)
ax.fill(scale * x, scale * y, color='red')
# 循环绘制跳动的爱心
while True:
# 放大爱心
for scale in np.linspace(1, 10, 20):
ax.clear()
draw_heart(scale)
plt.xlim(-200, 200)
plt.ylim(-200, 200)
plt.axis('off')
plt.pause(0.1)
# 缩小爱心
for scale in np.linspace(10, 1, 20):
ax.clear()
draw_heart(scale)
plt.xlim(-200, 200)
plt.ylim(-200, 200)
plt.axis('off')
plt.pause(0.1)
运行程序
- 打开命令窗口到程序文件目录,执行
python ./heartbeat.py命令,就会弹出一颗跳动的红心窗口了。你可以根据需要调整窗口大小、爱心的颜色和动画速度等参数,有时间的同学可以试一下。
结语
通过这个练习,我们可以学到如何使用
matplotlib库来绘制实心的跳动爱心。让我们了解如何创建图形窗口、定义绘图函数、循环绘制动画等基本概念和技巧。这个练习还提醒我在编写代码之前要导入所需的库,并且需要不断尝试和调整参数来达到预期的效果。总的来说,这是一个有趣且有教育意义的练习,可以让我们熟悉matplotlib库的使用,并提升自己的编程技能。