-
Notifications
You must be signed in to change notification settings - Fork 0
/
create_graphs.py
101 lines (88 loc) · 2.87 KB
/
create_graphs.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import plotly.express as px
import pandas as pd
df = pd.read_csv('data/dataset-all.csv')
entry_number_columns = slice(1, 10)
finisher_percent_columns = slice(19, 28)
distance_columns = slice(28, 30)
length_columns = slice(30, 32)
def set_default_updates(figure):
figure.update_traces(mode='markers+lines')
figure.update_xaxes(tickmode='linear',
tickangle=-45,
rangeslider_visible=True)
return figure
def create_base_figure(columns, has_trendline):
if has_trendline:
return px.scatter(df,
x=df['Year'],
y=df.columns[columns],
trendline='ols',
trendline_scope='overall')
else:
return px.scatter(df,
x=df['Year'],
y=df.columns[columns])
# ENTRY NUMBERS
def create_entry_numbers_graphs(base_figure):
entry_number_fig = base_figure
entry_number_fig = set_default_updates(entry_number_fig)
entry_number_fig.update_yaxes(tickmode='linear',
tick0=25,
dtick=25)
entry_number_fig.update_layout(
xaxis_title='Year',
yaxis_title='Entries',
legend_title_text='Category',
legend=dict(
orientation='h'
)
)
return entry_number_fig
# FINISHERS PERCENT
def create_finisher_percent_graph(base_figure):
finisher_percent_fig = base_figure
finisher_percent_fig = set_default_updates(finisher_percent_fig)
finisher_percent_fig.update_yaxes(tickmode='linear',
tick0=5,
dtick=5)
finisher_percent_fig.update_layout(
xaxis_title='Year',
yaxis_title='Finisher Percentage',
legend_title_text='Category',
legend=dict(
orientation='h'
)
)
return finisher_percent_fig
# DISTANCE
def create_distance_graph(base_figure):
distance_fig = base_figure
distance_fig = set_default_updates(distance_fig)
distance_fig.update_yaxes(tickmode='linear',
tick0=500,
dtick=500)
distance_fig.update_layout(
xaxis_title='Year',
yaxis_title='Distance (km)',
legend_title_text='Category',
legend=dict(
orientation='h'
)
)
return distance_fig
# LENGTH
def create_length_graph(base_figure):
length_fig = base_figure
length_fig = set_default_updates(length_fig)
length_fig.update_yaxes(tickmode='linear',
tick0=1,
dtick=1)
length_fig.update_layout(
xaxis_title='Year',
yaxis_title='Length (days)',
legend_title_text='Category',
legend=dict(
orientation='h'
)
)
return length_fig