|
6 | 6 | Show the marginal distributions of a scatter plot as histograms at the sides of
|
7 | 7 | the plot.
|
8 | 8 |
|
| 9 | +This layout has a central scatter plot, with marginal histograms above and to the |
| 10 | +right of the central plot. |
| 11 | +
|
9 | 12 | For a nice alignment of the main Axes with the marginals, two options are shown
|
10 | 13 | below:
|
11 | 14 |
|
@@ -55,27 +58,27 @@ def scatter_hist(x, y, ax, ax_histx, ax_histy):
|
55 | 58 |
|
56 | 59 |
|
57 | 60 | # %%
|
| 61 | +# Defining the Axes positions using subplot_mosaic |
| 62 | +# ------------------------------------------------ |
58 | 63 | #
|
59 |
| -# Defining the Axes positions using a gridspec |
60 |
| -# -------------------------------------------- |
| 64 | +# We use the `~.pyplot.subplot_mosaic` function to define the positions and |
| 65 | +# names of the three axes; the empty axes is specified by `'.'`. We manually |
| 66 | +# specify the size of the figure, and can make the different axes have |
| 67 | +# different sizes by specifying the *width_ratios* and *height_ratios* |
| 68 | +# arguments. The *layout* argument is set to `'constrained'` to optimize the |
| 69 | +# spacing between the axes. |
61 | 70 | #
|
62 |
| -# We define a gridspec with unequal width- and height-ratios to achieve desired |
63 |
| -# layout. Also see the :ref:`arranging_axes` tutorial. |
64 |
| - |
65 |
| -# Start with a square Figure. |
66 |
| -fig = plt.figure(figsize=(6, 6)) |
67 |
| -# Add a gridspec with two rows and two columns and a ratio of 1 to 4 between |
68 |
| -# the size of the marginal Axes and the main Axes in both directions. |
69 |
| -# Also adjust the subplot parameters for a square plot. |
70 |
| -gs = fig.add_gridspec(2, 2, width_ratios=(4, 1), height_ratios=(1, 4), |
71 |
| - left=0.1, right=0.9, bottom=0.1, top=0.9, |
72 |
| - wspace=0.05, hspace=0.05) |
73 |
| -# Create the Axes. |
74 |
| -ax = fig.add_subplot(gs[1, 0]) |
75 |
| -ax_histx = fig.add_subplot(gs[0, 0], sharex=ax) |
76 |
| -ax_histy = fig.add_subplot(gs[1, 1], sharey=ax) |
77 |
| -# Draw the scatter plot and marginals. |
78 |
| -scatter_hist(x, y, ax, ax_histx, ax_histy) |
| 71 | +# Note that there are other ways to accomplish the same layout using a gridspec |
| 72 | +# and only adding the three desired axes, or by using `~.pyplot.subplots` and |
| 73 | +# removing the unused axes in the upper right. The arguments are similar to the ones |
| 74 | +# used here. |
| 75 | + |
| 76 | +fig, axs = plt.subplot_mosaic([['histx', '.'], |
| 77 | + ['scatter', 'histy']], |
| 78 | + figsize=(6, 6), |
| 79 | + width_ratios=(4, 1), height_ratios=(1, 4), |
| 80 | + layout='constrained') |
| 81 | +scatter_hist(x, y, axs['scatter'], axs['histx'], axs['histy']) |
79 | 82 |
|
80 | 83 |
|
81 | 84 | # %%
|
|
0 commit comments