141 lines
4.3 KiB
Python
141 lines
4.3 KiB
Python
import matplotlib.pyplot as plt
|
|
|
|
def currency_fmt(num):
|
|
return ("$"+("{:0,.2f}".format(float(num))))[:-3] # Cents are dropped from diplay
|
|
|
|
def make_basic_greenred(name, v1, v2):
|
|
title = (name)
|
|
width = 0.2
|
|
bottom = 0
|
|
|
|
#setup plot
|
|
fig, ax = plt.subplots()
|
|
fig.patch.set_facecolor((0,0,0,0))
|
|
ax.set_facecolor((0,0,0,0))
|
|
|
|
#make fist bar and offset the bottom line by it
|
|
p = ax.bar(title, [v1], width, bottom=bottom, align='center',color='tab:green')
|
|
ax.bar_label(p, label_type='center', fmt=currency_fmt)
|
|
bottom += v1
|
|
|
|
#make second bar graph
|
|
p = ax.bar(title, [v2], width, bottom=bottom, align='center', color='tab:red')
|
|
ax.bar_label(p, label_type='center', fmt=currency_fmt)
|
|
|
|
return fig
|
|
|
|
#Version of green red graph with no labels
|
|
def make_basic_greenred_NL(name, v1, v2):
|
|
title = (name)
|
|
width = 0.2
|
|
bottom = 0
|
|
|
|
#setup plot
|
|
fig, ax = plt.subplots()
|
|
fig.patch.set_facecolor((0,0,0,0))
|
|
ax.set_facecolor((0,0,0,0))
|
|
|
|
#make fist bar and offset the bottom line by it
|
|
p = ax.bar(title, [v1], width, bottom=bottom, align='center',color='tab:green')
|
|
bottom += v1
|
|
|
|
#make second bar graph
|
|
p = ax.bar(title, [v2], width, bottom=bottom, align='center', color='tab:red')
|
|
|
|
return fig
|
|
|
|
|
|
### I Mountain Grahps
|
|
|
|
# Generates graph for Emergency Fund
|
|
def gen_EF(wb):
|
|
fig = make_basic_greenred("Emergency Fund",wb["I Mountain"]["A2"].value,wb["I Mountain"]["C2"].value)
|
|
|
|
fig.savefig('./.gen/EF.png',dpi=300)
|
|
|
|
|
|
# Generates graph for Life Insurance Tracker
|
|
def gen_LI(wb):
|
|
fig = make_basic_greenred("Life Insurance Tracker",wb["I Mountain"]["A7"].value,wb["I Mountain"]["C7"].value)
|
|
|
|
fig.savefig('./.gen/LI.png',dpi=300)
|
|
|
|
# Generates graph for Disability Insurance Tracker
|
|
def gen_DI(wb):
|
|
fig = make_basic_greenred("Disability Insurance Tracker",wb["I Mountain"]["A11"].value,wb["I Mountain"]["C11"].value)
|
|
|
|
fig.savefig('./.gen/DI.png',dpi=300)
|
|
|
|
|
|
### O Mountain Graphs
|
|
|
|
# Generates graph for Roth IRA
|
|
def gen_Roth_IRA(wb):
|
|
fig = make_basic_greenred("Roth IRA",wb["O Mountain"]["A2"].value,wb["O Mountain"]["C2"].value)
|
|
|
|
fig.savefig('./.gen/Roth_IRA.png',dpi=300)
|
|
|
|
# Generates graph for Roth Catch Up
|
|
def gen_Roth_Catch_Up(wb):
|
|
fig = make_basic_greenred("Roth Catch Up",wb["O Mountain"]["A4"].value,wb["O Mountain"]["C4"].value)
|
|
|
|
fig.savefig('./.gen/Roth_Catch_Up.png',dpi=300)
|
|
|
|
# Generates graph for 401K contribution
|
|
def gen_401K_Contribution(wb):
|
|
fig = make_basic_greenred("401K Contribution",wb["O Mountain"]["A6"].value,wb["O Mountain"]["C6"].value)
|
|
|
|
fig.savefig('./.gen/401K_Contribution.png',dpi=300)
|
|
|
|
# Generates graph for 401K contribution Catch Up
|
|
def gen_401K_Catch_Up(wb):
|
|
fig = make_basic_greenred("401K Catch Up",wb["O Mountain"]["A8"].value,wb["O Mountain"]["C8"].value)
|
|
|
|
fig.savefig('./.gen/401K_Catch_Up.png',dpi=300)
|
|
|
|
# Generates graph for HSA Contribution
|
|
def gen_HSA_Contribution(wb):
|
|
fig = make_basic_greenred("HSA Contribution",wb["O Mountain"]["A10"].value,wb["O Mountain"]["C10"].value)
|
|
|
|
fig.savefig('./.gen/HSA_Contribution.png',dpi=300)
|
|
|
|
# Generates graph for FSA Contribution
|
|
def gen_FSA_Contribution(wb):
|
|
fig = make_basic_greenred("FSA Contribution",wb["O Mountain"]["A12"].value,wb["O Mountain"]["C12"].value)
|
|
|
|
fig.savefig('./.gen/FSA_Contribution.png',dpi=300)
|
|
|
|
|
|
### Oh I Mountain
|
|
|
|
# Generates main Oh I Mountain Graph
|
|
def gen_Oh_I_Mountain(wb):
|
|
|
|
title = "Monthly Income Goal"
|
|
width = 0.2
|
|
bottom = 0
|
|
|
|
#setup plot
|
|
fig, ax = plt.subplots()
|
|
fig.patch.set_facecolor((0,0,0,0))
|
|
ax.set_facecolor((0,0,0,0))
|
|
|
|
#Gets values
|
|
values = [
|
|
[wb["Oh I Mountain"]["A6"].value,"cornflowerblue"],
|
|
[wb["Oh I Mountain"]["B6"].value,"orange"],
|
|
[wb["Oh I Mountain"]["C6"].value,"mediumorchid"],
|
|
[wb["Oh I Mountain"]["D6"].value,"gold"],
|
|
[wb["Oh I Mountain"]["E6"].value,"darkturquoise"],
|
|
[wb["Oh I Mountain"]["F6"].value,"limegreen"],
|
|
[wb["Oh I Mountain"]["G6"].value,"royalblue"],
|
|
[wb["Oh I Mountain"]["C2"].value,"red"]
|
|
]
|
|
|
|
for value in values:
|
|
p = ax.bar(title, value[0], width, bottom=bottom, align='center',color=value[1])
|
|
ax.bar_label(p, label_type='center', fmt=currency_fmt)
|
|
bottom += value[0]
|
|
|
|
fig.savefig('./.gen/Monthly_Income_Goal.png',dpi=300)
|
|
|