简单的轴垫

简单的轴垫

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. import mpl_toolkits.axisartist.angle_helper as angle_helper
  4. import mpl_toolkits.axisartist.grid_finder as grid_finder
  5. from matplotlib.projections import PolarAxes
  6. from matplotlib.transforms import Affine2D
  7. import mpl_toolkits.axisartist as axisartist
  8. from mpl_toolkits.axisartist.grid_helper_curvelinear import \
  9. GridHelperCurveLinear
  10. def setup_axes(fig, rect):
  11. """
  12. polar projection, but in a rectangular box.
  13. """
  14. # see demo_curvelinear_grid.py for details
  15. tr = Affine2D().scale(np.pi/180., 1.) + PolarAxes.PolarTransform()
  16. extreme_finder = angle_helper.ExtremeFinderCycle(20, 20,
  17. lon_cycle=360,
  18. lat_cycle=None,
  19. lon_minmax=None,
  20. lat_minmax=(0, np.inf),
  21. )
  22. grid_locator1 = angle_helper.LocatorDMS(12)
  23. grid_locator2 = grid_finder.MaxNLocator(5)
  24. tick_formatter1 = angle_helper.FormatterDMS()
  25. grid_helper = GridHelperCurveLinear(tr,
  26. extreme_finder=extreme_finder,
  27. grid_locator1=grid_locator1,
  28. grid_locator2=grid_locator2,
  29. tick_formatter1=tick_formatter1
  30. )
  31. ax1 = axisartist.Subplot(fig, rect, grid_helper=grid_helper)
  32. ax1.axis[:].set_visible(False)
  33. fig.add_subplot(ax1)
  34. ax1.set_aspect(1.)
  35. ax1.set_xlim(-5, 12)
  36. ax1.set_ylim(-5, 10)
  37. return ax1
  38. def add_floating_axis1(ax1):
  39. ax1.axis["lat"] = axis = ax1.new_floating_axis(0, 30)
  40. axis.label.set_text(r"$\theta = 30^{\circ}$")
  41. axis.label.set_visible(True)
  42. return axis
  43. def add_floating_axis2(ax1):
  44. ax1.axis["lon"] = axis = ax1.new_floating_axis(1, 6)
  45. axis.label.set_text(r"$r = 6$")
  46. axis.label.set_visible(True)
  47. return axis
  48. fig = plt.figure(1, figsize=(9, 3.))
  49. fig.clf()
  50. fig.subplots_adjust(left=0.01, right=0.99, bottom=0.01, top=0.99,
  51. wspace=0.01, hspace=0.01)
  52. def ann(ax1, d):
  53. if plt.rcParams["text.usetex"]:
  54. d = d.replace("_", r"\_")
  55. ax1.annotate(d, (0.5, 1), (5, -5),
  56. xycoords="axes fraction", textcoords="offset points",
  57. va="top", ha="center")
  58. ax1 = setup_axes(fig, rect=141)
  59. axis = add_floating_axis1(ax1)
  60. ann(ax1, r"default")
  61. ax1 = setup_axes(fig, rect=142)
  62. axis = add_floating_axis1(ax1)
  63. axis.major_ticklabels.set_pad(10)
  64. ann(ax1, r"ticklabels.set_pad(10)")
  65. ax1 = setup_axes(fig, rect=143)
  66. axis = add_floating_axis1(ax1)
  67. axis.label.set_pad(20)
  68. ann(ax1, r"label.set_pad(20)")
  69. ax1 = setup_axes(fig, rect=144)
  70. axis = add_floating_axis1(ax1)
  71. axis.major_ticks.set_tick_out(True)
  72. ann(ax1, "ticks.set_tick_out(True)")
  73. plt.show()

下载这个示例