49 lines
1.4 KiB
Python
49 lines
1.4 KiB
Python
import json
|
|
import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
|
|
colorList = json.load(open('color/config.json','r'))["color"]
|
|
|
|
import csv
|
|
|
|
data_pasg = {}
|
|
data_temp = {}
|
|
|
|
with open('data/passenger.csv', 'r') as f:
|
|
reader = csv.reader(f)
|
|
header = next(reader)
|
|
for row in reader:
|
|
data_pasg[row[0]] = np.array(row[1:],dtype=float)
|
|
|
|
with open('data/temperature.csv', 'r') as f:
|
|
reader = csv.reader(f)
|
|
header = next(reader)
|
|
for row in reader:
|
|
data_temp[row[0]] = np.array(row[1:],dtype=float)
|
|
|
|
xList = np.array([])
|
|
yList = np.array([])
|
|
for year in range(2014,2024):
|
|
plt.scatter(data_pasg[str(year)][0], data_temp[str(year)][2], color=colorList[0])
|
|
xList = np.append(xList,data_pasg[str(year)][0])
|
|
yList = np.append(yList,data_temp[str(year)][2])
|
|
|
|
from scipy.optimize import curve_fit
|
|
def linear(x,k,b):
|
|
return k*x+b
|
|
valk,valb = curve_fit(linear,xList,yList)[0]
|
|
residuals = yList - linear(xList,valk,valb)
|
|
ss_res = np.sum(residuals**2)
|
|
ss_tot = np.sum((yList-np.mean(yList))**2)
|
|
r_squared = 1 - (ss_res / ss_tot)
|
|
print("R-squared:", r_squared)
|
|
|
|
plt.plot(np.arange(0,80000,1000),linear(np.arange(0,80000,1000),valk,valb),color=colorList[1])
|
|
|
|
plt.xlabel('Passenger')
|
|
plt.ylabel('SnowFall')
|
|
plt.title('Relation between Passenger and SnowFall')
|
|
plt.text( 60000, 110, "k = %f\nb = %f\nR^2 = %f"%(valk,valb,r_squared),color=colorList[1])
|
|
# plt.show()
|
|
plt.savefig('result/relation-plot0.png')
|