您可以將數據分爲兩部分(早上和下午分開)繪製到Axis
的正確區域,然後通過手動設置xtick_labels
來實現翻蓋。下面的例子,如何做到這一點的原則(數據不看着你的原始圖中的數據非常喜歡,雖然):
from matplotlib import pyplot as plt
import numpy as np
#latitude:
lat = -36.55
#declination:
def delta(N):
return -23.44*np.cos(360/365*(N+10))
azimuth_morning = np.linspace(180,0,50)
azimuth_afternoon = np.linspace(360,180,50)
def zenith(azimuth, lat, N):
return np.rad2deg(np.arcsin(
np.sin(np.deg2rad(lat))*np.sin(np.deg2rad(delta(N)))+
np.cos(np.deg2rad(lat))*np.cos(np.deg2rad(delta(N)))*
np.cos(np.deg2rad(azimuth))
))
def plot_sun_arc(ax, N):
ax.plot(180+azimuth_morning,zenith(azimuth_morning,lat,N),'k')
ax.plot(azimuth_afternoon-180,zenith(azimuth_afternoon,lat,N),'k')
fig,ax = plt.subplots(figsize=(8,4))
for N in range(0,366,60):
plot_sun_arc(ax,N)
xticks = [i for i in range(0,361, 20)]
xtick_labels = ['{}'.format(t+180) if t < 180 else '{}'.format(t-180) for t in xticks]
ax.set_xticks(xticks)
ax.set_xticklabels(xtick_labels)
ax.set_xlim([0,360])
ax.set_ylim([0,90])
plt.show()
由此得出的數字是這樣的:
您可以將數據分成兩部分(早上和下午分別)繪製到「軸」的正確區域,然後通過手動設置'xtick_labels'來實現翻轉。 –
這似乎工作,但正如你所說,數據看起來不正確。該圖表看起來像是海拔與小時的關係圖,所以我認爲您的方位角計算是錯誤的。更精確的角度需要計算小時角度和緯度以及緯度。我會看看我是否可以使用我的數據與你的劇情代碼。 – icenov