Browse Source

First draft of script

master
Maximilian Stiefel 3 years ago
parent
commit
cc3c13727e
  1. 28
      ecar.json
  2. 44
      ecar.py

28
ecar.json

@ -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
}
}

44
ecar.py

@ -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…
Cancel
Save