.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/639c2224cf80115c1bbad2f8f79046efac1e517bd4494a0d939dcd031428eed5.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/1a004f328880c7849c0f4eadf9a3693b1d6806dae57088f5a78bf0eb2b54154b.png

See also