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')