"""Polygon shapes made from lines."""from..data.datasetimportDatasetfrom.bases.line_collectionimportLineCollection
[docs]classRectangle(LineCollection):""" Class for the rectangle shape. .. plot:: :scale: 75 :caption: This shape is generated using the panda dataset. import matplotlib.pyplot as plt from data_morph.data.loader import DataLoader from data_morph.shapes.polygons import Rectangle _ = Rectangle(DataLoader.load_dataset('panda')).plot() Parameters ---------- dataset : Dataset The starting dataset to morph into other shapes. """def__init__(self,dataset:Dataset)->None:xmin,xmax=dataset.df.x.quantile([0.1,0.9])ymin,ymax=dataset.df.y.quantile([0.1,0.9])super().__init__([[xmin,ymin],[xmin,ymax]],[[xmin,ymin],[xmax,ymin]],[[xmax,ymin],[xmax,ymax]],[[xmin,ymax],[xmax,ymax]],)
[docs]classStar(LineCollection):""" Class for the star shape. .. plot:: :scale: 75 :caption: This shape is generated using the panda dataset. import matplotlib.pyplot as plt from data_morph.data.loader import DataLoader from data_morph.shapes.polygons import Star _ = Star(DataLoader.load_dataset('panda')).plot() Parameters ---------- dataset : Dataset The starting dataset to morph into other shapes. """def__init__(self,dataset:Dataset)->None:bounds=dataset.data_bounds.clone()bounds.align_aspect_ratio()x_bounds=bounds.x_boundsy_bounds=bounds.y_boundsxmin,xmax=x_boundsymin,ymax=y_boundsx_range=x_bounds.rangey_range=y_bounds.rangepts=[[xmin,ymin+y_range*0.625],[xmin+x_range*0.375,ymin+y_range*0.625],[xmin+x_range*0.5,ymax],[xmin+x_range*0.625,ymin+y_range*0.625],[xmax,ymin+y_range*0.625],[xmin+x_range*0.6875,ymin+y_range*0.375],[xmin+x_range*0.8125,ymin],[xmin+x_range*0.5,ymin+y_range*0.25],[xmin+x_range*0.1875,ymin],[xmin+x_range*0.3125,ymin+y_range*0.375],[xmin,ymin+y_range*0.625],]super().__init__(*[lineforlineinzip(pts[:-1],pts[1:])])