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()