""" =================== axis_direction demo =================== """ import matplotlib.pyplot as plt import numpy as np from matplotlib.projections import PolarAxes from matplotlib.transforms import Affine2D import mpl_toolkits.axisartist as axisartist import mpl_toolkits.axisartist.angle_helper as angle_helper import mpl_toolkits.axisartist.grid_finder as grid_finder from mpl_toolkits.axisartist.grid_helper_curvelinear import \ GridHelperCurveLinear def setup_axes(fig, rect): """Polar projection, but in a rectangular box.""" # see demo_curvelinear_grid.py for details grid_helper = GridHelperCurveLinear( ( Affine2D().scale(np.pi/180., 1.) + PolarAxes.PolarTransform(apply_theta_transforms=False) ), extreme_finder=angle_helper.ExtremeFinderCycle( 20, 20, lon_cycle=360, lat_cycle=None, lon_minmax=None, lat_minmax=(0, np.inf), ), grid_locator1=angle_helper.LocatorDMS(12), grid_locator2=grid_finder.MaxNLocator(5), tick_formatter1=angle_helper.FormatterDMS(), ) ax = fig.add_subplot( rect, axes_class=axisartist.Axes, grid_helper=grid_helper, aspect=1, xlim=(-5, 12), ylim=(-5, 10)) ax.axis[:].toggle(ticklabels=False) ax.grid(color=".9") return ax def add_floating_axis1(ax): ax.axis["lat"] = axis = ax.new_floating_axis(0, 30) axis.label.set_text(r"$\theta = 30^{\circ}$") axis.label.set_visible(True) return axis def add_floating_axis2(ax): ax.axis["lon"] = axis = ax.new_floating_axis(1, 6) axis.label.set_text(r"$r = 6$") axis.label.set_visible(True) return axis fig = plt.figure(figsize=(8, 4), layout="constrained") for i, d in enumerate(["bottom", "left", "top", "right"]): ax = setup_axes(fig, rect=241+i) axis = add_floating_axis1(ax) axis.set_axis_direction(d) ax.set(title=d) for i, d in enumerate(["bottom", "left", "top", "right"]): ax = setup_axes(fig, rect=245+i) axis = add_floating_axis2(ax) axis.set_axis_direction(d) ax.set(title=d) plt.show()