.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/4d43dc82622be8988ed8218519c11c9be50ce661dfa7cd19184fedade51c6b4c.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/6c985b573a04d1ec0b5c791b275bb950e15b0aeac99be5e6654b838e872ceeb0.png

See also