底下是 24 節氣地球所在的位置
完整代碼如下
import matplotlib import pylab as plt import cv2 import numpy as np from PIL import Image matplotlib.rc('font', family='Microsoft JhengHei') fig=plt.figure(figsize=(6,6)) season=['冬至','小寒','大寒','立春','雨水','驚蟄', '春分','清明','殼雨','立夏','小滿','芒種', '夏至','小暑','大暑','立秋','處暑','白露', '秋分','寒露','霜降','立冬','小雪','大雪',] img=Image.open("earth.png") img=img.transpose(Image.FLIP_TOP_BOTTOM) img=img.rotate(23.5) img_sun=Image.open("sun.png") #地球軌道線 r=300 ax = fig.add_axes([0, 0, 1, 1]) #ax.axis("off") ax.set_xlim(-380, 380) ax.set_ylim(-380, 380) a = np.linspace(0, 360, 360) x = r * np.cos(np.pi * a / 180) y = r * np.sin(np.pi * a / 180) ax.plot(x, y, c="b", linewidth=0.5) #24節氣線 for a in range(0, 360, 15): x1 = r * np.cos(np.pi * a / 180) y1 = r * np.sin(np.pi * a / 180) x2 = r * np.cos(np.pi * (a + 180) / 180) y2 = r * np.sin(np.pi * (a + 180) / 180) x = (r + 20) * np.cos(np.pi * a / 180) y = (r + 20) * np.sin(np.pi * a / 180) ax.plot([x1, x2], [y1, y2], c='k', linewidth=0.2) ax.text(x - 15, y - 10, season[int(a / 15)]) #45度線 for a in range(0, 360, 45): x1 = r * np.cos(np.pi * a / 180) y1 = r * np.sin(np.pi * a / 180) x2 = r * np.cos(np.pi * (a + 180) / 180) y2 = r * np.sin(np.pi * (a + 180) / 180) ax.plot([x1, x2], [y1, y2], c='b', linewidth=0.5) #太陽圖示 sun = fig.add_axes([0.5-0.05, 0.5-0.05, 0.1, 0.1]) sun.axis("off") sun.imshow(img_sun) #地球動畫 earth=fig.add_axes([x+0.5-0.05,y+0.5-0.05,0.1,0.1]) a = np.sin(np.pi * 66.5 / 180) / np.cos(np.pi * 66.5 / 180) earth_x = np.array([170, 460]) earth_y = (a * earth_x - 380).astype(int) for trace in range(0,360): plt.delaxes(earth) x = 0.39 * np.cos(np.pi * trace / 180) y = 0.39 * np.sin(np.pi * trace / 180) earth=fig.add_axes([x+0.5-0.05,y+0.5-0.05,0.1,0.1]) earth.set_ylim(0, 700) earth.axis("off") earth.imshow(img) earth.plot(earth_x, earth_y, c='r') plt.pause(0.01) plt.show()