演示Axes Grid

具有单个或自己的彩条的2x2图像的网格。

演示Axes Grid

  1. import matplotlib.pyplot as plt
  2. from mpl_toolkits.axes_grid1 import ImageGrid
  3. def get_demo_image():
  4. import numpy as np
  5. from matplotlib.cbook import get_sample_data
  6. f = get_sample_data("axes_grid/bivariate_normal.npy", asfileobj=False)
  7. z = np.load(f)
  8. # z is a numpy array of 15x15
  9. return z, (-3, 4, -4, 3)
  10. def demo_simple_grid(fig):
  11. """
  12. A grid of 2x2 images with 0.05 inch pad between images and only
  13. the lower-left axes is labeled.
  14. """
  15. grid = ImageGrid(fig, 141, # similar to subplot(141)
  16. nrows_ncols=(2, 2),
  17. axes_pad=0.05,
  18. label_mode="1",
  19. )
  20. Z, extent = get_demo_image()
  21. for i in range(4):
  22. im = grid[i].imshow(Z, extent=extent, interpolation="nearest")
  23. # This only affects axes in first column and second row as share_all =
  24. # False.
  25. grid.axes_llc.set_xticks([-2, 0, 2])
  26. grid.axes_llc.set_yticks([-2, 0, 2])
  27. def demo_grid_with_single_cbar(fig):
  28. """
  29. A grid of 2x2 images with a single colorbar
  30. """
  31. grid = ImageGrid(fig, 142, # similar to subplot(142)
  32. nrows_ncols=(2, 2),
  33. axes_pad=0.0,
  34. share_all=True,
  35. label_mode="L",
  36. cbar_location="top",
  37. cbar_mode="single",
  38. )
  39. Z, extent = get_demo_image()
  40. for i in range(4):
  41. im = grid[i].imshow(Z, extent=extent, interpolation="nearest")
  42. grid.cbar_axes[0].colorbar(im)
  43. for cax in grid.cbar_axes:
  44. cax.toggle_label(False)
  45. # This affects all axes as share_all = True.
  46. grid.axes_llc.set_xticks([-2, 0, 2])
  47. grid.axes_llc.set_yticks([-2, 0, 2])
  48. def demo_grid_with_each_cbar(fig):
  49. """
  50. A grid of 2x2 images. Each image has its own colorbar.
  51. """
  52. grid = ImageGrid(fig, 143, # similar to subplot(143)
  53. nrows_ncols=(2, 2),
  54. axes_pad=0.1,
  55. label_mode="1",
  56. share_all=True,
  57. cbar_location="top",
  58. cbar_mode="each",
  59. cbar_size="7%",
  60. cbar_pad="2%",
  61. )
  62. Z, extent = get_demo_image()
  63. for i in range(4):
  64. im = grid[i].imshow(Z, extent=extent, interpolation="nearest")
  65. grid.cbar_axes[i].colorbar(im)
  66. for cax in grid.cbar_axes:
  67. cax.toggle_label(False)
  68. # This affects all axes because we set share_all = True.
  69. grid.axes_llc.set_xticks([-2, 0, 2])
  70. grid.axes_llc.set_yticks([-2, 0, 2])
  71. def demo_grid_with_each_cbar_labelled(fig):
  72. """
  73. A grid of 2x2 images. Each image has its own colorbar.
  74. """
  75. grid = ImageGrid(fig, 144, # similar to subplot(144)
  76. nrows_ncols=(2, 2),
  77. axes_pad=(0.45, 0.15),
  78. label_mode="1",
  79. share_all=True,
  80. cbar_location="right",
  81. cbar_mode="each",
  82. cbar_size="7%",
  83. cbar_pad="2%",
  84. )
  85. Z, extent = get_demo_image()
  86. # Use a different colorbar range every time
  87. limits = ((0, 1), (-2, 2), (-1.7, 1.4), (-1.5, 1))
  88. for i in range(4):
  89. im = grid[i].imshow(Z, extent=extent, interpolation="nearest",
  90. vmin=limits[i][0], vmax=limits[i][1])
  91. grid.cbar_axes[i].colorbar(im)
  92. for i, cax in enumerate(grid.cbar_axes):
  93. cax.set_yticks((limits[i][0], limits[i][1]))
  94. # This affects all axes because we set share_all = True.
  95. grid.axes_llc.set_xticks([-2, 0, 2])
  96. grid.axes_llc.set_yticks([-2, 0, 2])
  97. if 1:
  98. F = plt.figure(1, (10.5, 2.5))
  99. F.subplots_adjust(left=0.05, right=0.95)
  100. demo_simple_grid(F)
  101. demo_grid_with_single_cbar(F)
  102. demo_grid_with_each_cbar(F)
  103. demo_grid_with_each_cbar_labelled(F)
  104. plt.show()

下载这个示例