刻度格式化程序

显示不同的刻度格式化程序。

刻度格式化程序示例

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. import matplotlib.ticker as ticker
  4. # Setup a plot such that only the bottom spine is shown
  5. def setup(ax):
  6. ax.spines['right'].set_color('none')
  7. ax.spines['left'].set_color('none')
  8. ax.yaxis.set_major_locator(ticker.NullLocator())
  9. ax.spines['top'].set_color('none')
  10. ax.xaxis.set_ticks_position('bottom')
  11. ax.tick_params(which='major', width=1.00, length=5)
  12. ax.tick_params(which='minor', width=0.75, length=2.5, labelsize=10)
  13. ax.set_xlim(0, 5)
  14. ax.set_ylim(0, 1)
  15. ax.patch.set_alpha(0.0)
  16. fig = plt.figure(figsize=(8, 6))
  17. n = 7
  18. # Null formatter
  19. ax = fig.add_subplot(n, 1, 1)
  20. setup(ax)
  21. ax.xaxis.set_major_locator(ticker.MultipleLocator(1.00))
  22. ax.xaxis.set_minor_locator(ticker.MultipleLocator(0.25))
  23. ax.xaxis.set_major_formatter(ticker.NullFormatter())
  24. ax.xaxis.set_minor_formatter(ticker.NullFormatter())
  25. ax.text(0.0, 0.1, "NullFormatter()", fontsize=16, transform=ax.transAxes)
  26. # Fixed formatter
  27. ax = fig.add_subplot(n, 1, 2)
  28. setup(ax)
  29. ax.xaxis.set_major_locator(ticker.MultipleLocator(1.0))
  30. ax.xaxis.set_minor_locator(ticker.MultipleLocator(0.25))
  31. majors = ["", "0", "1", "2", "3", "4", "5"]
  32. ax.xaxis.set_major_formatter(ticker.FixedFormatter(majors))
  33. minors = [""] + ["%.2f" % (x-int(x)) if (x-int(x))
  34. else "" for x in np.arange(0, 5, 0.25)]
  35. ax.xaxis.set_minor_formatter(ticker.FixedFormatter(minors))
  36. ax.text(0.0, 0.1, "FixedFormatter(['', '0', '1', ...])",
  37. fontsize=15, transform=ax.transAxes)
  38. # FuncFormatter can be used as a decorator
  39. @ticker.FuncFormatter
  40. def major_formatter(x, pos):
  41. return "[%.2f]" % x
  42. ax = fig.add_subplot(n, 1, 3)
  43. setup(ax)
  44. ax.xaxis.set_major_locator(ticker.MultipleLocator(1.00))
  45. ax.xaxis.set_minor_locator(ticker.MultipleLocator(0.25))
  46. ax.xaxis.set_major_formatter(major_formatter)
  47. ax.text(0.0, 0.1, 'FuncFormatter(lambda x, pos: "[%.2f]" % x)',
  48. fontsize=15, transform=ax.transAxes)
  49. # FormatStr formatter
  50. ax = fig.add_subplot(n, 1, 4)
  51. setup(ax)
  52. ax.xaxis.set_major_locator(ticker.MultipleLocator(1.00))
  53. ax.xaxis.set_minor_locator(ticker.MultipleLocator(0.25))
  54. ax.xaxis.set_major_formatter(ticker.FormatStrFormatter(">%d<"))
  55. ax.text(0.0, 0.1, "FormatStrFormatter('>%d<')",
  56. fontsize=15, transform=ax.transAxes)
  57. # Scalar formatter
  58. ax = fig.add_subplot(n, 1, 5)
  59. setup(ax)
  60. ax.xaxis.set_major_locator(ticker.AutoLocator())
  61. ax.xaxis.set_minor_locator(ticker.AutoMinorLocator())
  62. ax.xaxis.set_major_formatter(ticker.ScalarFormatter(useMathText=True))
  63. ax.text(0.0, 0.1, "ScalarFormatter()", fontsize=15, transform=ax.transAxes)
  64. # StrMethod formatter
  65. ax = fig.add_subplot(n, 1, 6)
  66. setup(ax)
  67. ax.xaxis.set_major_locator(ticker.MultipleLocator(1.00))
  68. ax.xaxis.set_minor_locator(ticker.MultipleLocator(0.25))
  69. ax.xaxis.set_major_formatter(ticker.StrMethodFormatter("{x}"))
  70. ax.text(0.0, 0.1, "StrMethodFormatter('{x}')",
  71. fontsize=15, transform=ax.transAxes)
  72. # Percent formatter
  73. ax = fig.add_subplot(n, 1, 7)
  74. setup(ax)
  75. ax.xaxis.set_major_locator(ticker.MultipleLocator(1.00))
  76. ax.xaxis.set_minor_locator(ticker.MultipleLocator(0.25))
  77. ax.xaxis.set_major_formatter(ticker.PercentFormatter(xmax=5))
  78. ax.text(0.0, 0.1, "PercentFormatter(xmax=5)",
  79. fontsize=15, transform=ax.transAxes)
  80. # Push the top of the top axes outside the figure because we only show the
  81. # bottom spine.
  82. fig.subplots_adjust(left=0.05, right=0.95, bottom=0.05, top=1.05)
  83. plt.show()

下载这个示例