源 | 小象 文 | 小象君
“超级蓝血月”,153年才出现的奇观,就在今晚。
所谓“超级蓝血月”,实际上是:
超级月亮+蓝月+月全食——
“超级月亮”指的是月亮近地点恰逢满月;
蓝月(Blue Moon)则是一个自然月内出现两次满月;
月全食时,呈赤铜色的月亮被称为血月(Blood moon)。
而今晚,这三个偶然事件将叠加出现,构成极为罕见的“超级蓝血月”。
上次小象君观看超级蓝血月的时候,还是1866年3月31日,一晃一百五十年过去了……所以,今晚这次超级蓝血月,是无论如何也不能错过的!
小象君的年龄?你猜…
可是,当小象君兴致勃勃滴邀约公司程序猿们一同观月时,开发部老大无情地宣布:今晚加班!
心里一万头草泥马奔过…
在小象君的强烈抗议并说明这次超级蓝血月有多么罕见的情况下,开发部老大扔过来一个轻蔑:
“不就是圆形红月亮吗?”
三分钟以后…
Python版蓝血月!
大家都学过Python,人和人就是不一样!
还能说啥?
于是乎,公司里的非单身狗都欢呼雀跃终于可以给对象有个交代了。
是的,我们美好单纯善良的程序员就是这么好糊弄…
生气归生气,小象君还是贱贱滴把代码要过来了…
就是这些,拿走不谢!
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(8,8))
ax = fig.add_subplot(111)
ax.spines['left'].set_color('none')
ax.spines['bottom'].set_color('none')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.set_xticks([])
ax.set_yticks([])
theta = np.arange(0, 2 * np.pi + 0.1,2 * np.pi / 800)
x = np.cos(theta)
y = np.sin(theta)
v = np.linspace(0, 10, 80)
v.shape = (80, 1)
x = v * x
y = v * y
plt.style.use('ggplot')
plt.plot(x, y, color = (0.75, 0, 0))
plt.show()
下面是用Python画图的具体流程:
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(8,8))
ax = fig.add_subplot(111)
ax.spines[
'left'].set_color('none')
ax.spines['bottom'].set_color('none')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.set_xticks([])
ax.set_yticks([])
# 实现功能
theta = np.arange(0, 2 * np.pi + 0.1,2 * np.pi / 800)
x = np.cos(theta)
y = np.sin(theta)
v = np.linspace(0, 10, 80)
v.shape = (80, 1)
x = v * x
y = v * y
plt.style.use('ggplot')
plt.plot(x, y, color = (0.75, 0, 0))
plt.show()
想要zhuangbility的话,改下代码…
可以画出这种效果——
甚至,这种效果——
怎么实现?
参考这个著名的豆瓣画马教程吧……
为了让大家过得开心,小象君我尽力了……
最后,祝各位无论是看天的还是看电脑的,今晚快乐赏月!
-END-
技术实现参考自《python 如何用matplotlib画一个漂亮的圆》
作者:bd_area