.ipynb

Visualize Shape Variation#

Display reconstructed shapes along component axes.

EFA outlines#

import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA

from ktch.datasets import load_outline_mosquito_wings
from ktch.harmonic import EllipticFourierAnalysis
from ktch.plot import shape_variation_plot

data = load_outline_mosquito_wings(as_frame=True)
coords = data.coords.to_numpy().reshape(-1, 100, 2)

efa = EllipticFourierAnalysis(n_harmonics=20)
coef = efa.fit_transform(coords)

pca = PCA(n_components=5).fit(coef)
fig = shape_variation_plot(
    pca,
    descriptor=efa,
    components=(0, 1, 2),
    sd_values=(-2, -1, 0, 1, 2),
)
../../_images/e42da34c0ad1801f70c077a13ed72294b3eeec0e853b2b8b665bdd72fc68adf3.png

Select components and SD values#

Show only specific components with custom SD steps:

fig = shape_variation_plot(
    pca,
    descriptor=efa,
    components=(0, 1),
    sd_values=(-3, -1.5, 0, 1.5, 3),
)
../../_images/e642be4070788df8a2fd237625cded9db25d7bdec7653a7c265b23087363de65.png

See also