Maximilian Stiefel
3 years ago
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