当前位置:   article > 正文

手把手教你用python多线程绘制跨年烟花_python多线程绘制plt

python多线程绘制plt

 

手把手教你用python多线程绘制跨年烟花

在本项目中,我们使用了 `threading` 库创建了一个新线程,在该线程中绘制跨年烟花。我们使用 `matplotlib` 库的 `scatter` 函数绘制跨年烟花,并使用 `plt.pause` 函数暂停一段时间,再使用 `clear` 函数清除图像。

 

 代码:

  1. import random
  2. import threading
  3. import time
  4. import imageio
  5. import matplotlib.pyplot as plt
  6. import numpy as np
  7. # 绘制跨年烟花的函数
  8. def draw_fireworks(ax):
  9. # 绘制烟花的颜色
  10. colors = ['r', 'y', 'b', 'g', 'm', 'c']
  11. # 随机选择烟花的颜色
  12. color = random.choice(colors)
  13. # 随机生成烟花的爆炸位置
  14. x = random.uniform(-1, 1)
  15. y = random.uniform(-1, 1)
  16. # 绘制烟花的爆炸效果
  17. ax.scatter(x, y, color=color, s=100)
  18. # 随机生成烟花的碎片数量
  19. num_fragments = random.randint(10, 20)
  20. # 随机生成烟花的碎片位置
  21. for _ in range(num_fragments):
  22. x = random.uniform(-1, 1)
  23. y = random.uniform(-1, 1)
  24. ax.scatter(x, y, color=color, s=10)
  25. # 创建一个图像列表,用于保存绘制的每一帧
  26. images = []
  27. # 绘制跨年烟花的线程
  28. def fireworks_thread():
  29. # 创建一个新的图像
  30. fig, ax = plt.subplots()
  31. # 设置图像的背景色为黑色
  32. # 设置图像的背景色为黑色
  33. ax.set_facecolor('k')
  34. # 循环绘制跨年烟花
  35. while True:
  36. # 绘制跨年烟花
  37. draw_fireworks(ax)
  38. # 暂停一段时间
  39. plt.pause(0.1)
  40. # 清除图像
  41. ax.clear()
  42. thread = threading.Thread(target=fireworks_thread)
  43. thread.start()
  44. time.sleep(5)
  45. thread.stop()
  46. time.sleep(5)
  47. imageio.mimsave('fireworks.gif', images)

 效果发现不理想,烟花太稀疏。

 我们可以改进一下:

如果希望让烟花放的更多,可以在绘制跨年烟花的函数 draw_fireworks 中增加循环次数。例如,可以在线程中使用以下代码段改变烟花的数量:

  1. # 绘制跨年烟花的线程
  2. def fireworks_thread():
  3. # 创建一个新的图像
  4. fig, ax = plt.subplots()
  5. # 设置图像的背景色为黑色
  6. ax.set_facecolor('k')
  7. # 循环绘制跨年烟花
  8. while True:
  9. # 绘制若干个跨年烟花
  10. for _ in range(5):
  11. # 绘制跨年烟花
  12. draw_fireworks(ax)
  13. # 暂停一段时间
  14. plt.pause(0.1)
  15. # 清除图像
  16. ax.clear()

在上述代码中,我们在每次循环中绘制了 5 个跨年烟花。您可以根据自己的需要调整这个数字,使烟花的数量更多。

效果图:

 

完整代码:

  1. import random
  2. import threading
  3. import time
  4. import imageio
  5. import matplotlib.pyplot as plt
  6. import numpy as np
  7. # 绘制跨年烟花的函数
  8. def draw_fireworks(ax):
  9. # 绘制烟花的颜色
  10. colors = ['r', 'y', 'b', 'g', 'm', 'c']
  11. # 随机选择烟花的颜色
  12. color = random.choice(colors)
  13. # 随机生成烟花的爆炸位置
  14. x = random.uniform(-1, 1)
  15. y = random.uniform(-1, 1)
  16. # 绘制烟花的爆炸效果
  17. ax.scatter(x, y, color=color, s=100)
  18. # 随机生成烟花的碎片数量
  19. num_fragments = random.randint(10, 20)
  20. # 随机生成烟花的碎片位置
  21. for _ in range(num_fragments):
  22. x = random.uniform(-1, 1)
  23. y = random.uniform(-1, 1)
  24. ax.scatter(x, y, color=color, s=10)
  25. # 创建一个图像列表,用于保存绘制的每一帧
  26. images = []
  27. # 绘制跨年烟花的线程
  28. # 绘制跨年烟花的线程
  29. def fireworks_thread():
  30. # 创建一个新的图像
  31. fig, ax = plt.subplots()
  32. # 设置图像的背景色为黑色
  33. ax.set_facecolor('k')
  34. # 循环绘制跨年烟花
  35. while True:
  36. # 绘制若干个跨年烟花
  37. for _ in range(5):
  38. # 绘制跨年烟花
  39. draw_fireworks(ax)
  40. # 暂停一段时间
  41. plt.pause(0.1)
  42. # 清除图像
  43. ax.clear()
  44. thread = threading.Thread(target=fireworks_thread)
  45. thread.start()
  46. time.sleep(5)
  47. thread.stop()
  48. time.sleep(5)
  49. imageio.mimsave('fireworks.gif', images)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/70906
推荐阅读
相关标签
  

闽ICP备14008679号