Coverage for src/graphs/land_resources_graph.py: 0%
22 statements
« prev ^ index » next coverage.py v7.8.2, created at 2025-06-03 19:06 +0000
« prev ^ index » next coverage.py v7.8.2, created at 2025-06-03 19:06 +0000
1import plotly.express as px
3COLOR_MAP = {
4 "GRAIN": "orange",
5 "WOOD": "saddlebrown", # a nice brown color name
6 "STONE": "gray",
7 "IRON": "olive"
8}
11def create_land_resources_dec_graph(df, log_y, theme):
12 df = df.copy()
13 df['dec_price_1000'] = df['dec_price'] * 1000
15 fig = px.line(
16 df,
17 x="date",
18 y="dec_price_1000",
19 log_y=True if log_y else False,
20 color="token_symbol",
21 title="1000 DEC",
22 color_discrete_map=COLOR_MAP,
23 labels={"dec_price_1000": "Amount of Resource", "date": "Date"},
24 hover_data=["token_symbol", "dec_price_1000"],
25 template=theme,
26 height=600,
27 )
28 fig.for_each_trace(lambda t: t.update(mode="lines+markers"))
30 return fig
33def create_land_resources_graph(df, log_y, theme):
34 df = df.copy()
35 df['resource_price_1000'] = df['resource_price'] * 1000
36 fig = px.line(
37 df,
38 x="date",
39 y="resource_price_1000",
40 log_y=True if log_y else False,
41 color="token_symbol",
42 title="1000 Resources",
43 color_discrete_map=COLOR_MAP,
44 labels={"resource_price_1000": "Cost in DEC", "date": "Date"},
45 hover_data=["token_symbol", "resource_price_1000"],
46 template=theme,
47 height=600,
48 )
49 fig.for_each_trace(lambda t: t.update(mode="lines+markers"))
51 return fig
54def create_land_resources_factor_graph(df, log_y, theme):
55 df['grain_equivalent'] = df['grain_equivalent'].round(3)
56 df['factor'] = df['factor'].round(2)
57 df_filtered = df[df['token_symbol'].isin(['WOOD', 'STONE', 'IRON'])].copy()
59 fig = px.line(
60 df_filtered,
61 x="date",
62 y="factor",
63 log_y=True if log_y else False,
64 color="token_symbol",
65 title="Grain factor",
66 color_discrete_map=COLOR_MAP,
67 labels={"factor": "Factor", "date": "Date"},
68 hover_data=["token_symbol", "factor"],
69 template=theme,
70 height=600,
71 )
72 fig.add_hline(
73 y=1.00,
74 line_dash="dash",
75 line_color="gray",
76 annotation_text="1.00 (Grain baseline)",
77 annotation_position="top left"
78 )
80 fig.for_each_trace(lambda t: t.update(mode="lines+markers"))
82 return fig