def plot_solar_system(outer=True, epoch=None, use_3d=False): """ Plots the whole solar system in one single call. .. versionadded:: 0.9.0 Parameters ------------ outer : bool, optional Whether to print the outer Solar System, default to True. epoch : ~astropy.time.Time, optional Epoch value of the plot, default to J2000. use_3d : bool, optional Produce 3D plot, default to False. """ bodies = [Mercury, Venus, Earth, Mars] if outer: bodies.extend([Jupiter, Saturn, Uranus, Neptune]) if use_3d: op = OrbitPlotter3D() # type: Union[OrbitPlotter3D, OrbitPlotter2D] else: op = OrbitPlotter2D() op.set_frame(*Orbit.from_body_ephem(Earth, epoch).pqw()) # type: ignore for body in bodies: orb = Orbit.from_body_ephem(body, epoch) op.plot(orb, label=str(body)) return op
def plot(self, label=None, use_3d=False, interactive=False): """Plots the orbit as an interactive widget. Parameters ---------- label : str, optional Label for the orbit, defaults to empty. use_3d : bool, optional Produce a 3D plot, default to False. interactive : bool, optional Produce an interactive (rather than static) image of the orbit, default to False. This option requires Plotly properly installed and configured for your environment. """ if not interactive and use_3d: raise ValueError( "The static plotter does not support 3D, use `interactive=True`" ) elif not interactive: from poliastro.plotting.static import StaticOrbitPlotter return StaticOrbitPlotter().plot(self, label=label) elif use_3d: from poliastro.plotting.core import OrbitPlotter3D return OrbitPlotter3D().plot(self, label=label) else: from poliastro.plotting.core import OrbitPlotter2D return OrbitPlotter2D().plot(self, label=label)
def _plot_solar_system_2d(epoch, outer=True, interactive=False): if interactive: orbit_plotter = OrbitPlotter2D( plane=Planes.EARTH_ECLIPTIC ) # type: Union[OrbitPlotter2D, StaticOrbitPlotter] else: orbit_plotter = StaticOrbitPlotter(plane=Planes.EARTH_ECLIPTIC) orbit_plotter.set_body_frame(Earth, epoch) _plot_bodies(orbit_plotter, outer, epoch) return orbit_plotter
def plot(self, label=None, use_3d=False): """Plots the orbit as an interactive widget. Parameters ---------- label : str, optional Label for the orbit, defaults to empty. use_3d : bool, optional Produce a 3D plot, default to False. """ if use_3d: return OrbitPlotter3D().plot(self, label=label) else: return OrbitPlotter2D().plot(self, label=label)
def plot( self, epoch=None, label=None, use_3d=False, interactive=False, plane=Planes.EARTH_ECLIPTIC, ): """Plots the body orbit. Parameters ---------- epoch : astropy.time.Time, optional Epoch of current position. label : str, optional Label for the orbit, defaults to empty. use_3d : bool, optional Produce a 3D plot, default to False. interactive : bool, optional Produce an interactive (rather than static) image of the orbit, default to False. This option requires Plotly properly installed and configured for your environment. """ if not interactive and use_3d: raise ValueError( "The static plotter does not support 3D, use `interactive=True`" ) elif not interactive: from poliastro.plotting.static import StaticOrbitPlotter return StaticOrbitPlotter(plane=plane).plot_body_orbit(self, epoch, label=label) elif use_3d: from poliastro.plotting.core import OrbitPlotter3D return OrbitPlotter3D(plane=plane).plot_body_orbit(self, epoch, label=label) else: from poliastro.plotting.core import OrbitPlotter2D return OrbitPlotter2D(plane=plane).plot_body_orbit(self, epoch, label=label)
def plot(self, label=None, use_3d=False, static=False): """Plots the orbit as an interactive widget. Parameters ---------- label : str, optional Label for the orbit, defaults to empty. use_3d : bool, optional Produce a 3D plot, default to False. static : bool, optional Produce a static image of the figure, default to false """ from poliastro.plotting.static import StaticOrbitPlotter if static and use_3d: raise ValueError("static and use_3d cannot be true at the same time") elif static: return StaticOrbitPlotter().plot(self, label=label) elif use_3d: return OrbitPlotter3D().plot(self, label=label) else: return OrbitPlotter2D().plot(self, label=label)