Coverage for src / graphs / land_resources_graph.py: 0%

22 statements  

« prev     ^ index     » next       coverage.py v7.13.4, created at 2026-03-01 10:28 +0000

1import plotly.express as px 

2 

3COLOR_MAP = { 

4 "GRAIN": "orange", 

5 "WOOD": "saddlebrown", # a nice brown color name 

6 "STONE": "gray", 

7 "IRON": "olive" 

8} 

9 

10 

11def create_land_resources_dec_graph(df, log_y, theme): 

12 df = df.copy() 

13 df['dec_price_1000'] = df['dec_price'] * 1000 

14 

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")) 

29 

30 return fig 

31 

32 

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")) 

50 

51 return fig 

52 

53 

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() 

58 

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 ) 

79 

80 fig.for_each_trace(lambda t: t.update(mode="lines+markers")) 

81 

82 return fig