Python怎样编程一个简易的流星雨效果
Admin 2022-05-23 群英技术资讯 2550 次浏览
这篇文章给大家分享的是“Python怎样编程一个简易的流星雨效果”,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下吧。流星雨的前提是得先有一个流星,所谓流星,就是一个拖着尾巴的直线。所谓拖着尾巴,实际上是我们的浪漫想象,实质无非是尺寸和颜色的渐变罢了。
而matplotlib并不能给一条曲线映射多个颜色,故而可将一条线拆分成多条,效果如图所示

代码为
import numpy as np import matplotlib.pyplot as plt from matplotlib.collections import LineCollection x0,y0 = 1,1 #此为流星位置 ts = np.arange(0,1,0.01) #参数 xs,ys = x0+ts, y0+ts #绘图线条 points = np.array([xs, ys]).T.reshape(-1, 1, 2) segments = np.concatenate([points[:-1], points[1:]], axis=1) ax = plt.subplot() lc = LineCollection(segments, cmap='viridis') lc.set_array(ts) lc.set_linewidth(ts[::-1]) line = ax.add_collection(lc) ax.set_xlim(0, 3) ax.set_ylim(0, 3) plt.show()
接下来就要把这个流星变成流星雨,很简单,多加一些流星就可以了,效果如下,尽管是在白天,但是不是感觉有点意思了。

代码为
from numpy.random import rand, randint
N,L = 20,100 #流星个数和线段数
ts = np.array([
np.linspace(0,rand(),L) for _ in range(N)]).T
x0,y0 = rand(2*N).reshape(2,1,N)
x0 *= 5
xs,ys = x0+ts, y0+ts #绘图线条1
points = np.array([xs, ys]).T.reshape(N,L,-1,2)
ax = plt.subplot()
for i in range(N):
segs = np.concatenate([points[i][:-1], points[i][1:]], axis=1)
lc = LineCollection(segs, cmap='viridis')
lc.set_array(ts[:,i])
lc.set_linewidth(ts[::-1,i])
ax.add_collection(lc)
ax.set_xlim(0, 6)
ax.set_ylim(-2, 3)
ax.set_axis_off() #取消坐标轴
plt.show()
如果想让天黑下去,方法为
plt.figure(facecolor="black") #将背景设为黑色
此外,背景设为黑色之后,注意要把颜色映射调整一下,想知道更多具体的颜色映射表戳这里:matplotlib中的伪彩映射
lc = LineCollection(segs, cmap='viridis_r')
所以就是这种

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
@property装饰器能把一个方法变成属性一样来调用,下面我们就一起来看看Python黑魔法@property装饰器的使用技巧解析@property有什么用呢?表
这篇文章主要介绍了Python包装异常处理方法,相比java,python的异常和java中不同,python主要是防止程序异常被中止。一旦被catch后它还行往下执行,本文就分享python相关的异常处理方法,需要的小伙伴可以参考一下
在看程序的时候看到了x[…, 0]的语句不是很理解,后来自己做实验略微了解,以此记录方便自己查看。
简介Python中的select模块专注于I O多路复用,提供了select poll epoll三个方法(其中后两个在Linux中可用,windows仅支持select),另外也
这篇我们来了解Python自动化测试之异常处理机制,小编通过实际的案例向大家展示了操作过程,简单易懂,有需要的朋友可以参考了解看看,那么接下来就跟随小编的思路来往下学习吧,希望对大家学习或工作能有帮助。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008