code: def curvelinear_test2(fig):
      """
      Polar projection, but in a rectangular box.
      """
  
      # PolarAxes.PolarTransform takes radian. However, we want our coordinate
      # system in degree
      tr = Affine2D().scale(np.pi / 180, 1) + PolarAxes.PolarTransform(
          apply_theta_transforms=False
      )
      # Polar projection, which involves cycle, and also has limits in
      # its coordinates, needs a special method to find the extremes
      # (min, max of the coordinate within the view).
      extreme_finder = angle_helper.ExtremeFinderCycle(
          nx=20,
          ny=20,  # Number of sampling points in each direction.
          lon_cycle=360,
          lat_cycle=None,
          lon_minmax=None,
          lat_minmax=(0, np.inf),
      )
      # Find grid values appropriate for the coordinate (degree, minute, second).
      grid_locator1 = angle_helper.LocatorDMS(12)
      # Use an appropriate formatter.  Note that the acceptable Locator and
      # Formatter classes are a bit different than that of Matplotlib, which
      # cannot directly be used here (this may be possible in the future).
      tick_formatter1 = angle_helper.FormatterDMS()
  
      grid_helper = GridHelperCurveLinear(
          tr,
          extreme_finder=extreme_finder,
          grid_locator1=grid_locator1,
          tick_formatter1=tick_formatter1,
      )
      ax1 = fig.add_subplot(
          1, 2, 2, axes_class=HostAxes, grid_helper=grid_helper
      )
  
      # make ticklabels of right and top axis visible.
      ax1.axis["right"].major_ticklabels.set_visible(True)
      ax1.axis["top"].major_ticklabels.set_visible(True)
      # let right axis shows ticklabels for 1st coordinate (angle)
      ax1.axis["right"].get_helper().nth_coord_ticks = 0
      # let bottom axis shows ticklabels for 2nd coordinate (radius)
      ax1.axis["bottom"].get_helper().nth_coord_ticks = 1
  
      ax1.set_aspect(1)
      ax1.set_xlim(-5, 12)
      ax1.set_ylim(-5, 10)
  
      ax1.grid(True, zorder=0)
  
      # A parasite Axes with given transform
      ax2 = ax1.get_aux_axes(tr)
      # note that ax2.transData == tr + ax1.transData
      # Anything you draw in ax2 will match the ticks and grids of ax1.
      ax2.plot(
          np.linspace(0, 30, 51), np.linspace(10, 10, 51), linewidth=2
      )
  
      ax2.pcolor(
          np.linspace(0, 90, 4),
          np.linspace(0, 10, 4),
          np.arange(9).reshape((3, 3)),
      )
      ax2.contour(
          np.linspace(0, 90, 4),
          np.linspace(0, 10, 4),
          np.arange(16).reshape((4, 4)),
          colors="k",
      )
  
file_path: matplotlib/galleries/examples/axisartist/demo_curvelinear_grid.py
imports: import matplotlib.pyplot
  import numpy
  from matplotlib.projections import PolarAxes
  from matplotlib.transforms import Affine2D
  from mpl_toolkits.axisartist import Axes, HostAxes, angle_helper
  from mpl_toolkits.axisartist.grid_helper_curvelinear import GridHelperCurveLinear
label_desc: Use image node_id 2 for calling a global function with example usage: curvelinear_test2(fig) without return types