def plot( self, ax: GeoAxesSubplot, **kwargs ) -> List[Artist]: # coverage: ignore """Plots the trajectory on a Matplotlib axis. The Flight supports Cartopy axis as well with automatic projection. If no projection is provided, a default `PlateCarree <https://scitools.org.uk/cartopy/docs/v0.15/crs/projections.html#platecarree>`_ is applied. Example usage: >>> from traffic.drawing import Mercator >>> fig, ax = plt.subplots(1, subplot_kw=dict(projection=Mercator()) >>> flight.plot(ax, alpha=.5) .. note:: See also `geoencode() <#traffic.core.Flight.geoencode>`_ for the altair equivalent. """ if "projection" in ax.__dict__ and "transform" not in kwargs: kwargs["transform"] = PlateCarree() if self.shape is not None: return ax.plot(*self.shape.xy, **kwargs) return []
def plot(self, ax: GeoAxesSubplot, **kwargs) -> List[Artist]: if "projection" in ax.__dict__ and "transform" not in kwargs: kwargs["transform"] = PlateCarree() if self.shape is not None: return ax.plot(*self.shape.xy, **kwargs) return []
def plot( self, ax: GeoAxesSubplot, airports: bool = True, airports_kw: Optional[Dict[str, Any]] = None, labels: Union[None, bool, str] = None, labels_kw: Optional[Dict[str, Any]] = None, **kwargs, ) -> List[Artist]: # coverage: ignore """Plots the trajectory on a Matplotlib axis. FlightPlans support Cartopy axis as well with automatic projection. If no projection is provided, a default `PlateCarree <https://scitools.org.uk/cartopy/docs/v0.15/crs/projections.html#platecarree>`_ is applied. Example usage: .. code:: python from traffic.drawing import Mercator fig, ax = plt.subplots(1, subplot_kw=dict(projection=Mercator()) flightplan.plot(ax, labels=True, alpha=.5) .. note:: See also `geoencode() <#traffic.core.Flight.geoencode>`_ for the altair equivalent. """ cumul = [] if "projection" in ax.__dict__ and "transform" not in kwargs: kwargs["transform"] = PlateCarree() if self.shape is not None: if isinstance(self.shape, LineString): cumul.append(ax.plot(*self.shape.xy, **kwargs)) else: for s_ in self.shape: cumul.append(ax.plot(*s_.xy, **kwargs)) airports_style = dict(s=50, marker=markers.atc_tower) if airports_kw is not None: airports_style = {**airports_style, **airports_kw} labels_style = dict(s=30, marker="^", zorder=3) if labels_kw is not None: labels_style = {**labels_style, **labels_kw} if airports and self.origin: from traffic.data import airports as airport_db ap = airport_db[self.origin] if ap is not None: cumul.append(ap.point.plot(ax, **airports_style)) if airports and self.destination: from traffic.data import airports as airport_db ap = airport_db[self.destination] if ap is not None: cumul.append(ap.point.plot(ax, **airports_style)) if labels: for point in self.all_points if labels == "all" else self.points: cumul.append(point.plot(ax, **labels_style)) return cumul