2 changed files with 72 additions and 0 deletions
			
			
		@ -0,0 +1,28 @@ | 
				
			|||
{ | 
				
			|||
    "kwh_price_home": 0.2, | 
				
			|||
    "kwh_price_commercial": 0.5, | 
				
			|||
    "petrol_litre_price": 1.75, | 
				
			|||
    "kilometers_per_year": 20000.0, | 
				
			|||
    "years": 3, | 
				
			|||
    "ecar": { | 
				
			|||
	"label": "Nissan Leaf", | 
				
			|||
        "price": 7600, | 
				
			|||
        "taxes": 0, | 
				
			|||
        "insurance": 354, | 
				
			|||
        "kwh_per_kilometer": 0.16, | 
				
			|||
        "maintenance": 200, | 
				
			|||
	"charging_behaviour": { | 
				
			|||
		"percent_free_charges": 80, | 
				
			|||
		"percent_home_charges": 10, | 
				
			|||
		"percent_commercial_charges": 10 | 
				
			|||
	} | 
				
			|||
    }, | 
				
			|||
    "ccar": { | 
				
			|||
	"label": "Suzuki Grand Vitara", | 
				
			|||
        "price": 7000, | 
				
			|||
        "taxes": 350, | 
				
			|||
        "insurance": 362, | 
				
			|||
        "litre_per_kilometer": 0.08, | 
				
			|||
        "maintenance": 1000 | 
				
			|||
    } | 
				
			|||
} | 
				
			|||
@ -0,0 +1,44 @@ | 
				
			|||
import matplotlib.pyplot as plt | 
				
			|||
import numpy as np | 
				
			|||
import json | 
				
			|||
 | 
				
			|||
with open("ecar.json", "r") as rf: | 
				
			|||
    settings = json.load(rf) | 
				
			|||
 | 
				
			|||
kilometer_price = np.array( [settings["ecar"]["kwh_per_kilometer"] * settings["kwh_price_home"], | 
				
			|||
                             settings["ccar"]["litre_per_kilometer"] * settings["petrol_litre_price"]]) | 
				
			|||
labels = [settings["ecar"]["label"], settings["ccar"]["label"]] | 
				
			|||
price = np.array([settings["ecar"]["price"], settings["ccar"]["price"]]) | 
				
			|||
taxes = np.array([settings["ecar"]["taxes"], settings["ccar"]["taxes"]]) | 
				
			|||
insurance = np.array([settings["ecar"]["insurance"], settings["ccar"]["insurance"]]) | 
				
			|||
kilometer_price_ecar =      (settings["ecar"]["charging_behaviour"]["percent_home_charges"] * settings["kwh_price_home"] | 
				
			|||
                        +    settings["ecar"]["charging_behaviour"]["percent_commercial_charges"] * settings["kwh_price_commercial"]) / 100.0 | 
				
			|||
driving = np.array([kilometer_price_ecar * settings["kilometers_per_year"], kilometer_price[1] * settings["kilometers_per_year"]]) | 
				
			|||
maintenance = np.array([settings["ecar"]["maintenance"], settings["ecar"]["maintenance"]]) | 
				
			|||
width = 0.3 | 
				
			|||
 | 
				
			|||
fig, ax = plt.subplots() | 
				
			|||
ax.bar(labels, price, width, label = "Price", color = "gray") | 
				
			|||
currenty = price | 
				
			|||
y = 0 | 
				
			|||
 | 
				
			|||
for i in range(settings["years"]): | 
				
			|||
#while currenty[0] > currenty[1]: | 
				
			|||
    ax.bar(labels, taxes, width, bottom = currenty, label = "Taxes".format(y), color = "darkgreen") | 
				
			|||
    currenty = currenty + taxes | 
				
			|||
    ax.bar(labels, insurance, width, bottom = currenty, label = "Insurance".format(y), color = "royalblue") | 
				
			|||
    currenty = currenty + insurance | 
				
			|||
    ax.bar(labels, driving, width, bottom = currenty, label = "Driving".format(y), color = "midnightblue") | 
				
			|||
    currenty = currenty + driving | 
				
			|||
    ax.bar(labels, maintenance, width, bottom = currenty, label = "Maintenance".format(y), color = "lavender") | 
				
			|||
    currenty = currenty + maintenance | 
				
			|||
    y += 1 | 
				
			|||
ecar_top = currenty[0] | 
				
			|||
#ax.plot(np.linspace(-0.2, 1.2, 10), [ecar_top]*10, "--", color = "firebrick", label = "Break even") | 
				
			|||
ax.text(0.3, ecar_top * 0.95, "Break even: {} years, {} kilometers".format(y, y*settings["kilometers_per_year"])) | 
				
			|||
ax.set_ylabel("CHF") | 
				
			|||
ax.set_title("Comparision of economics electric vs. combustion car") | 
				
			|||
ax.legend(["Price", "Taxes", "Insurance", "Driving", "Maintenance"]) | 
				
			|||
ax.grid(axis = "y") | 
				
			|||
print("Break even after {} years and {} kilometers. {}, {}".format(y, y*settings["kilometers_per_year"], currenty[0], currenty[1])) | 
				
			|||
plt.show() | 
				
			|||
					Loading…
					
					
				
		Reference in new issue