group plotted data by fields
This commit is contained in:
parent
08cfc98dec
commit
ad9df230a5
45
drees.py
45
drees.py
@ -179,6 +179,22 @@ def get_values_by_age_vac_field(
|
||||
return dates, fields
|
||||
|
||||
|
||||
def get_values_by_age_vac(
|
||||
dic_data_grouped: Dict[dt, Any], age: AgeGroup, vac_status: VacStatus
|
||||
) -> Tuple[List[dt], List[Dict[str, Any]]]:
|
||||
"""
|
||||
get deep fields data by age and vaccine status
|
||||
"""
|
||||
dates: List[dt] = list()
|
||||
fields: List[Dict[str, Any]] = list()
|
||||
for date, dic_age_grouped in dic_data_grouped.items():
|
||||
if (dic_vac_status := dic_age_grouped.get(age.value)) is not None:
|
||||
if (dic_field := dic_vac_status.get(vac_status.value)) is not None:
|
||||
fields.append(dic_field)
|
||||
dates.append(date)
|
||||
return dates, fields
|
||||
|
||||
|
||||
def plot_cumulative_field(dic_data_grouped: Dict[dt, Any], field: Field) -> None:
|
||||
fig = get_plot_fig()
|
||||
|
||||
@ -197,19 +213,27 @@ def plot_cumulative_field(dic_data_grouped: Dict[dt, Any], field: Field) -> None
|
||||
)
|
||||
|
||||
|
||||
def plot_data(
|
||||
dic_data_grouped: Dict[dt, Any], age: AgeGroup, vac_status: VacStatus, field: Field
|
||||
def extract_field_values(fields: List[Dict[str, Any]], field: Field) -> np.ndarray:
|
||||
field_values: List[float] = list()
|
||||
for item in fields:
|
||||
if (value := item.get(field)) is not None:
|
||||
field_values.append(value)
|
||||
return np.asarray(field_values)
|
||||
|
||||
|
||||
def plot_data_by_field(
|
||||
dic_data_grouped: Dict[dt, Any], age: AgeGroup, vac_status: VacStatus
|
||||
) -> None:
|
||||
"""
|
||||
Plot data by vaccine status, age and field
|
||||
"""
|
||||
fig = get_plot_fig()
|
||||
|
||||
dates, fields = get_values_by_age_vac_field(
|
||||
dic_data_grouped, age, vac_status, field
|
||||
)
|
||||
dates, fields = get_values_by_age_vac(dic_data_grouped, age, vac_status)
|
||||
|
||||
plt.plot(dates, fields, label=f"{field.value}")
|
||||
for field in Field:
|
||||
field_values = extract_field_values(fields, field)
|
||||
plt.plot(dates, field_values, label=f"{field.value}")
|
||||
plt.xlabel("date")
|
||||
plt.ylabel("nombre")
|
||||
plt.title(f"{age}ans - {vac_status}")
|
||||
@ -219,15 +243,14 @@ def plot_data(
|
||||
)
|
||||
|
||||
|
||||
def build_data_pool_args() -> List[Tuple[AgeGroup, VacStatus, Field]]:
|
||||
def build_data_pool_args() -> List[Tuple[AgeGroup, VacStatus]]:
|
||||
"""
|
||||
build tuple arguments to plot all data on multiprocess
|
||||
"""
|
||||
pool_args: List[Tuple[AgeGroup, VacStatus, Field]] = list()
|
||||
pool_args: List[Tuple[AgeGroup, VacStatus]] = list()
|
||||
for age_group in AgeGroup:
|
||||
for vac_status in VacStatus:
|
||||
for field in Field:
|
||||
pool_args.append((age_group, vac_status, field))
|
||||
pool_args.append((age_group, vac_status))
|
||||
return pool_args
|
||||
|
||||
|
||||
@ -264,7 +287,7 @@ if __name__ == "__main__":
|
||||
)
|
||||
|
||||
plot_data_pool_args = build_data_pool_args()
|
||||
f = partial(plot_data, dic_data_grouped)
|
||||
f = partial(plot_data_by_field, dic_data_grouped)
|
||||
with Pool() as pool:
|
||||
pool.starmap(f, plot_data_pool_args)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user