Source code for cell_abm_pipeline.tasks.make_density_figure

from math import sqrt

import matplotlib.figure as mpl
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from matplotlib import colormaps
from matplotlib.patches import RegularPolygon
from prefect import task


[docs]@task def make_density_figure(data: pd.DataFrame, scale: float) -> mpl.Figure: fig = plt.figure(figsize=(4, 4), constrained_layout=True) ax = fig.add_subplot() ax.set_box_aspect(1) cmap = colormaps["magma_r"] data["vn"] = (data["v"] - data["v"].min()) / (data["v"].max() - data["v"].min()) for _, row in data.iterrows(): hexagon = RegularPolygon( (row["x"], row["y"]), numVertices=6, radius=(scale / sqrt(3)), orientation=np.radians(30), facecolor=cmap(row["vn"]), ) ax.add_patch(hexagon) ax.set_xbound(data["x"].min() - scale, data["x"].max() + scale) ax.set_ybound(data["y"].min() - scale, data["y"].max() + scale) return fig