You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
3.3 KiB
92 lines
3.3 KiB
import matplotlib
|
|
matplotlib.use('Qt5Agg') # or 'Qt5Agg', depending on your setup
|
|
import matplotlib.pyplot as plt
|
|
import numpy as np
|
|
import json
|
|
import sys
|
|
import argparse
|
|
__author__ = 'm3x1m0m'
|
|
|
|
class JsonSettingsExtractor:
|
|
|
|
def __init__(self, fname):
|
|
with open(fname, "r") as rf:
|
|
settings = json.load(rf)
|
|
self._currency = settings["currency"]
|
|
self._legend = settings["legend"]
|
|
# Kind of inefficient code. Does not matter only runs once at startup
|
|
_technologies = settings["technologies"]
|
|
self._label = [technology["label"] for technology in _technologies]
|
|
self._installation_price = [technology["installation_price"] for technology in _technologies]
|
|
self._kwh_expenditure = [technology["kwh_expenditure"] for technology in _technologies]
|
|
self._kwh_price = [technology["kwh_price"] for technology in _technologies]
|
|
self._percent_inflation = [technology["percent_inflation"] for technology in _technologies]
|
|
self._years_lifespan = [technology["years_lifespan"] for technology in _technologies]
|
|
|
|
@property
|
|
def currency(self):
|
|
return self._currency
|
|
|
|
@property
|
|
def legend(self):
|
|
return self._legend
|
|
|
|
@property
|
|
def label(self):
|
|
return self._label
|
|
|
|
@property
|
|
def installation_price(self):
|
|
return self._installation_price
|
|
|
|
@property
|
|
def kwh_expenditure(self):
|
|
return self._kwh_expenditure
|
|
|
|
@property
|
|
def percent_inflation(self):
|
|
self._percent_inflation
|
|
|
|
@property
|
|
def years_lifespan(self):
|
|
self._years_lifespan
|
|
|
|
def main():
|
|
|
|
parser = argparse.ArgumentParser(description='This script allows to calculate which heating technology makes sense financially for you.')
|
|
parser.add_argument('-a','--settings', help='Settings file.', required=True, metavar=('FILENAME'))
|
|
parser.add_argument('-g','--plot', help='Visualize costs over one or multiple years.', type=int, metavar=('YEARS'))
|
|
args = parser.parse_args()
|
|
|
|
input_data = JsonSettingsExtractor(args.settings)
|
|
|
|
print("Inflations: {}".format(input_data.percent_inflation))
|
|
print("Expend: {}".format(input_data.kwh_expenditure))
|
|
|
|
|
|
# if args.plot != None:
|
|
# # Basic settings
|
|
# width = 0.3
|
|
# plt_colors = ["#8ecae6", "#219ebc", "#023047", "#ffb703", "#fb8500"];
|
|
# fig, ax = plt.subplots()
|
|
# ax.bar(input_data.label, input_data.installation_price, width, label = "Installation price", color = plt_colors[0])
|
|
|
|
# current_y = input_data.installation_price
|
|
# years = 0 #first year
|
|
|
|
# # Iteration for years in service
|
|
# for i in range(args.plot):
|
|
# inflation_factor = 1.0 + (input_data.percent_inflation * years) / 100.0
|
|
# increase = input_data.kwh_expenditure * inflation_factor
|
|
# ax.bar(input_data.label, increase, width, bottom = current_y, label = "Expenditure".format(y), color = plt_colors[1])
|
|
# years += 1
|
|
# current_y += increase
|
|
|
|
# ax.set_ylabel(input_data.currency)
|
|
# ax.set_title("Comparision of economics w/ different heating technologies")
|
|
# ax.legend(input_data.legend)
|
|
|
|
# plt.show()
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
|