added chart of change of wealth distribution over time

This commit is contained in:
likho 2025-08-23 20:09:59 -07:00
parent 2355d79e60
commit 3c425f7465

View File

@ -1,5 +1,6 @@
import pandas as pd
import matplotlib.pyplot as plt
def simple_interest(balances, rate=0.05, terms=3):
if terms <= 0:
@ -13,7 +14,7 @@ def simple_interest(balances, rate=0.05, terms=3):
new_bal.append(b)
return new_bal
def share_of_wealth(balances):
def calc_share_of_wealth(balances):
total_money = sum(balances)
shares = []
for balance in balances:
@ -29,7 +30,7 @@ def ubi(balances, dividend=10, terms=3):
new_bal.append(b)
return new_bal
def get_balances_over_time(names, balances, func):
def get_balances_over_time(names, balances, func, terms=4):
if func is None:
print("Need a function!")
return
@ -41,7 +42,7 @@ def get_balances_over_time(names, balances, func):
'initial' : balances
}
df = pd.DataFrame(data)
for t in range(1,4):
for t in range(1,terms):
key = "term%i" % t
frame = func(balances, terms=t)
if frame is not None:
@ -59,7 +60,7 @@ def illustrate_share_of_wealth():
print("They respectively have ", balances)
print("\nThe initial distribution of wealth is ")
print(share_of_wealth(balances))
print(calc_share_of_wealth(balances))
print("\n")
df = get_balances_over_time (
@ -84,6 +85,52 @@ def illustrate_share_of_wealth():
print(u)
print("What is the share of wealth in a UBI economy?")
print(share_of_wealth(u))
print(calc_share_of_wealth(u))
# illustrate_share_of_wealth()
def visualize_ubi(terms=25):
participants = ["Alice", "Bob", "Charlie"]
balances = [100,40,20]
df = get_balances_over_time (
participants, balances, ubi,
terms = terms
)
# print(df.keys)
shares = []
for key, data in df.items():
if key == "name":
continue
if key == "initial":
continue
shares.append(calc_share_of_wealth(data))
sow = pd.DataFrame(shares)
print(sow.keys())
x = [i for i in range(1,terms)]
assert(len(x) == len(shares))
plt.style.use('dark_background')
plt.plot(
x, sow[0], color="red", label=participants[0]
)
plt.plot(
x, sow[1], color="lightgreen", label=participants[1]
)
plt.plot(
x, sow[2], color="cyan", label=participants[2]
)
plt.axhline(
y=0.33, color='violet', linestyle='--'
)
plt.title("Change in Wealth Distribution Under UBI")
plt.legend()
plt.xlabel("Terms")
plt.ylabel("Share of Wealth")
plt.show()
return
visualize_ubi(terms=50)
illustrate_share_of_wealth()