.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/36ebfb89097a0a3b31a9f98b570035b7ce374f257359c66012937d0ba8fb792e.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/e34f68cf2c22b5c6a5397ade79466210f359a1c4d0b03582c1a597179d9e033a.png

See also