Coverage for src/cell_abm_pipeline/tasks/make_box_figure.py: 0%

16 statements  

« prev     ^ index     » next       coverage.py v7.1.0, created at 2024-06-05 19:14 +0000

1import matplotlib.figure as mpl 

2import matplotlib.pyplot as plt 

3import pandas as pd 

4from prefect import task 

5 

6 

7@task 

8def make_box_figure( 

9 keys: list[str], data: pd.DataFrame, xlabel: str = "", ylabel: str = "" 

10) -> mpl.Figure: 

11 fig = plt.figure(figsize=(4, 4), constrained_layout=True) 

12 

13 ax = fig.add_subplot() 

14 ax.set_box_aspect(1) 

15 

16 for index, key in enumerate(keys): 

17 group = data[data["key"] == key] 

18 

19 ax.boxplot(group["value"].values, labels=[key], positions=[index], widths=0.6) 

20 ax.scatter( 

21 group["key"], 

22 group["value"], 

23 s=10, 

24 alpha=0.3, 

25 c="k", 

26 edgecolors="none", 

27 ) 

28 

29 ax.set_xlabel(xlabel, fontweight="bold") 

30 ax.set_ylabel(ylabel, fontweight="bold") 

31 

32 return fig