aboutsummaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
Diffstat (limited to 'utils')
-rw-r--r--utils/salary_visualization.py36
1 files changed, 20 insertions, 16 deletions
diff --git a/utils/salary_visualization.py b/utils/salary_visualization.py
index a34094b..65503fe 100644
--- a/utils/salary_visualization.py
+++ b/utils/salary_visualization.py
@@ -10,10 +10,11 @@ from pandas import read_csv as pd_read_csv
import pandas as pd
import plotly.graph_objs as go
-locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
+locale.setlocale(locale.LC_ALL, "en_US.UTF-8")
# Read the CSV file
-df = pd_read_csv('~/git/cleberg.net/theme/static/salary.csv')
+df = pd_read_csv("~/git/cleberg.net/theme/static/salary.csv")
+
def format_currency(value: float) -> str:
"""
@@ -27,11 +28,13 @@ def format_currency(value: float) -> str:
"""
return f"${value:,.2f}"
+
# Reverse the order of the DataFrame
df = df.iloc[::-1].reset_index(drop=True)
# Calculate the percentage increase
-df['Percentage Increase'] = df['Salary'].pct_change() * 100
+df["Percentage Increase"] = df["Salary"].pct_change() * 100
+
def create_trace(row: pd.Series) -> go.Scatter:
"""
@@ -44,20 +47,21 @@ def create_trace(row: pd.Series) -> go.Scatter:
go.Scatter: The created scatter plot trace.
"""
title_company = f"{row['Title']} ({row['Company']})"
- salary_formatted = format_currency(row['Salary'])
- if pd.notna(row['Percentage Increase']):
+ salary_formatted = format_currency(row["Salary"])
+ if pd.notna(row["Percentage Increase"]):
text = f"{salary_formatted} ({row['Percentage Increase']:.2f}%)"
else:
text = salary_formatted
return go.Scatter(
- x=[row['Start'], row['End']],
- y=[row['Salary'], row['Salary']],
+ x=[row["Start"], row["End"]],
+ y=[row["Salary"], row["Salary"]],
text=[text],
- mode='lines+text',
+ mode="lines+text",
name=title_company,
- textposition='top center'
+ textposition="top center",
)
+
# Initialize the plot
fig = go.Figure()
@@ -70,16 +74,16 @@ fig.update_layout(
title="Salary Data Over Time (annualized)",
xaxis_title="Time",
yaxis_title="Salary",
- font={"family": 'monospace', "size": 16},
+ font={"family": "monospace", "size": 16},
margin={"l": 50, "r": 50, "t": 50, "b": 100},
legend={
- "orientation": 'h',
- "yanchor": 'top',
- "y": -0.3,
- "xanchor": 'center',
- "x": 0.5
+ "orientation": "h",
+ "yanchor": "top",
+ "y": -0.3,
+ "xanchor": "center",
+ "x": 0.5,
},
- height=800
+ height=800,
)
# Display the plot