演示轴方向

演示轴方向示例

  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[:].toggle(ticklabels=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=(8, 4))
  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. for i, d in enumerate(["bottom", "left", "top", "right"]):
  53. ax1 = setup_axes(fig, rect=241++i)
  54. axis = add_floating_axis1(ax1)
  55. axis.set_axis_direction(d)
  56. ax1.annotate(d, (0, 1), (5, -5),
  57. xycoords="axes fraction", textcoords="offset points",
  58. va="top", ha="left")
  59. for i, d in enumerate(["bottom", "left", "top", "right"]):
  60. ax1 = setup_axes(fig, rect=245++i)
  61. axis = add_floating_axis2(ax1)
  62. axis.set_axis_direction(d)
  63. ax1.annotate(d, (0, 1), (5, -5),
  64. xycoords="axes fraction", textcoords="offset points",
  65. va="top", ha="left")
  66. plt.show()

下载这个示例