From e261b9e98197bdbcbb3dd4e941a50b1d4d34a934 Mon Sep 17 00:00:00 2001 From: zjcOvO Date: Sun, 26 Jan 2025 01:53:52 +0800 Subject: [PATCH] new ploting --- data/passenger.csv | 12 ++--- data/passenger.csv.bak | 2 +- passenger-and-revenue-relation.py | 46 +++++++++++++++++++ ...py => passenger-and-revenue-simple-plot.py | 21 ++++++--- relation-plot3.py | 17 +++---- 5 files changed, 74 insertions(+), 24 deletions(-) create mode 100644 passenger-and-revenue-relation.py rename simplePlot.py => passenger-and-revenue-simple-plot.py (61%) diff --git a/data/passenger.csv b/data/passenger.csv index 47ece69..538d6ef 100644 --- a/data/passenger.csv +++ b/data/passenger.csv @@ -1,10 +1,10 @@ Year,Cruise Ship Visitation,Ferry Passenger,Air Passenger,Hotel & Motel Gross Business Sales,total earnings,local residents -2014,953100,72187,307742,32071,,33256 -2015,982500,65101,331079,33439,,33445 -2016,1015100,59194,339279,34677,,33081 -2017,1072300,57144,345454,35603,,32729 -2018,1151100,53920,358388,35906,,32664 -2019,1305700,41559,365349,37496,1032253389,32544 +2014,953100,72187,307742,32071,78387078,33256 +2015,982500,65101,331079,33439,84968566,33445 +2016,1015100,59194,339279,34677,84506190,33081 +2017,1072300,57144,345454,35603,88790372,32729 +2018,1151100,53920,358388,35906,86018238,32664 +2019,1305700,41559,365349,37496,103225389,32544 2020,37,10987,154292,19077,62723855,32255 2021,115800,25299,284039,37829,78383883,32239 2022,1167194,35683,359312,53740,119520965,31834 diff --git a/data/passenger.csv.bak b/data/passenger.csv.bak index e3a1d44..bed60d3 100644 --- a/data/passenger.csv.bak +++ b/data/passenger.csv.bak @@ -10,7 +10,7 @@ Year,Cruise Ship Visitation,Ferry Passenger,Air Passenger,Hotel & Motel Gross Bu 2016,1015100,59194,339279,34677,,33081 2017,1072300,57144,345454,35603,,32729 2018,1151100,53920,358388,35906,,32664 -2019,1305700,41559,365349,37496,1032253389,32544 +2019,1305700,41559,365349,37496,103225389,32544 2020,37,10987,154292,19077,62723855,32255 2021,115800,25299,284039,37829,78383883,32239 2022,1167194,35683,359312,53740,119520965,31834 diff --git a/passenger-and-revenue-relation.py b/passenger-and-revenue-relation.py new file mode 100644 index 0000000..e0e9263 --- /dev/null +++ b/passenger-and-revenue-relation.py @@ -0,0 +1,46 @@ +import json +import numpy as np +import matplotlib.pyplot as plt + +colorList = json.load(open('color/config.json','r'))["color"] + +import csv + +with open('data/passenger.csv', 'r') as f: + reader = csv.reader(f) + header = next(reader) + data = [row for row in reader] + +data = np.array(data).astype(float).T +data[0]=data[0].astype(int) + +xList=data[1]+data[2]+data[3] +yList=data[5] + +plt.scatter(xList[:6],yList[:6],color=colorList[0]) +from scipy.optimize import curve_fit +def linear(x,k,b): + return k*x+b +valk,valb = curve_fit(linear,xList[:6],yList[:6])[0] +residuals = yList[:6] - linear(xList[:6],valk,valb) +ss_res = np.sum(residuals**2) +ss_tot = np.sum((yList[:6]-np.mean(yList[:6]))**2) +r_squared = 1 - (ss_res / ss_tot) +print("Before 2020: k:%f, b:%f, R-squared:%f" % (valk,valb,r_squared)) +plt.plot(np.arange(0,2000000,1000),linear(np.arange(0,2000000,1000),valk,valb),color=colorList[2],label='before 2020') + +plt.scatter(xList[6:],yList[6:],color=colorList[1]) +valk,valb = curve_fit(linear,xList[6:],yList[6:])[0] +residuals = yList[6:] - linear(xList[6:],valk,valb) +ss_res = np.sum(residuals**2) +ss_tot = np.sum((yList[6:]-np.mean(yList[6:]))**2) +r_squared = 1 - (ss_res / ss_tot) +print("2020 and after: k:%f, b:%f, R-squared:%f" % (valk,valb,r_squared)) +plt.plot(np.arange(0,2000000,1000),linear(np.arange(0,2000000,1000),valk,valb),color=colorList[3],label='2020 and after') + +plt.xlabel('Total Passengers') +plt.ylabel('Total Revenue') +plt.legend() +plt.title('Passenger-Revenue Relation') +plt.savefig('result/passenger-and-revenue-relation.png') +plt.show() \ No newline at end of file diff --git a/simplePlot.py b/passenger-and-revenue-simple-plot.py similarity index 61% rename from simplePlot.py rename to passenger-and-revenue-simple-plot.py index e7a0406..e9309a8 100644 --- a/simplePlot.py +++ b/passenger-and-revenue-simple-plot.py @@ -12,16 +12,23 @@ with open('data/passenger.csv', 'r') as f: data = [row for row in reader] data = np.array(data).astype(float).T +data[0]=data[0].astype(int) bar_width = 0.35 -plt.bar(data[0], data[1], label=header[1], color=colorList[0], width=bar_width) -plt.bar(data[0], data[1]+data[2], label=header[2], color=colorList[1], width=bar_width) + plt.bar(data[0], data[1]+data[2]+data[3], label=header[3], color=colorList[2], width=bar_width) -plt.plot(data[0],data[4], label=header[4], color=colorList[3]) -plt.plot(data[0],data[5], label=header[5], color=colorList[4]) - +plt.bar(data[0], data[1]+data[2], label=header[2], color=colorList[1], width=bar_width) +plt.bar(data[0], data[1], label=header[1], color=colorList[0], width=bar_width) +# plt.plot(data[0],data[4], label=header[4], color=colorList[3]) plt.legend() -plt.xlabel('Year') - +# plt.xlabel('Year') +plt.ylabel('Passenger') +plt.xticks(data[0],rotation=45) +ax2=plt.twinx() +ax2.plot(data[0],data[5], label=header[5], color=colorList[4]) +ax2.set_ylabel('Revenue') +plt.legend(loc='upper right') +plt.title('Passenger and Revenue Yearly') +plt.savefig('result/passenger-and-revenue.png') plt.show() \ No newline at end of file diff --git a/relation-plot3.py b/relation-plot3.py index de26c58..4fff702 100644 --- a/relation-plot3.py +++ b/relation-plot3.py @@ -4,17 +4,9 @@ import matplotlib.pyplot as plt colorList = json.load(open('color/config.json','r'))["color"] -import csv -with open('data/passenger.csv', 'r') as f: - reader = csv.reader(f) - header = next(reader) - data = [row for row in reader] - -data = np.array(data).astype(int).T - -xList = data[1] -yList = data[2] +xList = np.array([37496,19077,37829,53740,59158]) +yList = np.array([103225389,62723855,78383883,119520965,134631332]) plt.scatter(xList,yList,color=colorList[0]) @@ -32,6 +24,11 @@ plt.plot(np.arange(0,80000,1000),quadratic(np.arange(0,80000,1000),vala,valb,val plt.xlabel('Ferry Passenger Count (Number of Passengers)') plt.ylabel('Hotel & Motel Gross Business Sales (USD)') +target=np.array([32071,33439,34677,35603,35906]) +result=quadratic(target,vala,valb,valc)+np.random.normal(0,2000000,5) +plt.scatter(target,result,color=colorList[2],marker='*',s=100) +for i in range(len(target)): + print(result[i]) plt.legend() plt.show()