diff options
author | Christian Cleberg <hello@cleberg.net> | 2024-06-16 15:37:32 -0500 |
---|---|---|
committer | Christian Cleberg <hello@cleberg.net> | 2024-06-16 15:37:32 -0500 |
commit | 77166faaf61fcb4ab05bb14f27e8cc1777a004d2 (patch) | |
tree | 731bea70629c2635443022434db5d4f9bcfcc9a7 /salary_visualization.py | |
parent | 1b551c51a78e0de33a549692600fb677bfd69fae (diff) | |
download | cleberg.net-77166faaf61fcb4ab05bb14f27e8cc1777a004d2.tar.gz cleberg.net-77166faaf61fcb4ab05bb14f27e8cc1777a004d2.tar.bz2 cleberg.net-77166faaf61fcb4ab05bb14f27e8cc1777a004d2.zip |
add salary visualization tool and results
Diffstat (limited to 'salary_visualization.py')
-rw-r--r-- | salary_visualization.py | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/salary_visualization.py b/salary_visualization.py new file mode 100644 index 0000000..25d2134 --- /dev/null +++ b/salary_visualization.py @@ -0,0 +1,56 @@ +# %pip install plotly pandas + +import pandas as pd +import plotly.graph_objs as go +import locale + +locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') + +df = pd.read_csv('~/Downloads/salary.csv') + +# 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 + +# Initialize the plot +fig = go.Figure() + +# Adding each data point as a separate trace to display the text +for index, row in df.iterrows(): + title_company = f"{row['Title']} ({row['Company']})" + salary_formatted = format_currency(row['Salary']) + if pd.notna(row['Percentage Increase']): + text = f"{salary_formatted} ({row['Percentage Increase']:.2f}%)" + else: + text = salary_formatted + fig.add_trace(go.Scatter( + x=[row['Start'], row['End']], + y=[row['Salary'], row['Salary']], + text=[text], + mode='lines+text', + name=title_company, # Combine title and company for legend + textposition='top center' + )) + +fig.update_layout( + title="Salary Data Over Time (annualized)", + xaxis_title="Time", + yaxis_title="Salary", + font=dict( + family="monospace", + size=16 + ), + margin=dict(l=50, r=50, t=50, b=100), # Adjust bottom margin for legend space + legend=dict( + orientation="h", # Horizontal orientation + yanchor="top", # Anchor to the top of the legend box + y=-0.3, # Position below the graph + xanchor="center", # Center the legend horizontally + x=0.5 # Center the legend + ), + height=800 # Increase vertical size +) + +fig.show() |