The result seems to be incorrect. In my opinion, the solar radiation should present a clear diurnal pattern with seasonal heterogeneity.
How to explain the bizarre results? Or is there any better solution for the solar radiation data if the monitoring equipment is unavailable.
Any comments or suggestions would be appreciated.
PS: I added the result of altitude degree the same period to response the comment of BarocliniCplusplus
altitude_deg
< 0, the radiation is 0. An example just using pysolar, datetime, and pyplot (I don't use pandas, so I can't comment on that) and lists looks like: import datetime import matplotlib.pyplot as plt import pysolar lat, lon = 39.9075, 116.39723 # Beijing, China timezone = datetime.timezone(datetime.timedelta(hours=8)) # 0800 UTC start = datetime.datetime(2018,1,1,tzinfo=timezone) # 1 Jan 2018 # Calculate radiation every hour for 90 days nhr = 24*90 dates, altitudes_deg, radiations = list(), list(), list() for ihr in range(nhr): date = start + datetime.timedelta(hours=ihr) altitude_deg = pysolar.solar.get_altitude(lat,lon,date) if altitude_deg <= 0: radiation = 0. else: radiation = pysolar.radiation.get_radiation_direct(date,altitude_deg) dates.append(date) altitudes_deg.append(altitude_deg) radiations.append(radiation) days = [ihr/24 for ihr in range(nhr)] fig, axs = plt.subplots(nrows=2,ncols=1,sharex=True) axs[0].plot(days,altitudes_deg) axs[0].set_title('Solar altitude, degrees') axs[1].plot(days,radiations) axs[1].set_title('Solar radiation, W/m2') axs[1].set_xlabel('Days since ' + start.strftime('%Y/%m/%d %H:%M UTC')) plt.show()