I have a matplotlib plot in python with 3 subplots, all in 1 column.
I currently control the height of each subplot with:
gridspec.GridSpec(3, 1, height_ratios=[1, 3, 3])
I have no spacing via:
plt.subplots_adjust(hspace=0.0)
But I would like to put some spacing between row 2 and 3 only.
In one of the other answers, I read that I can do something like:
gs1.update(left=0.05, right=0.48, wspace=0)
But I don't really understand what is happening. Could someone give me some more information please?
You can use plt. subplots_adjust to change the spacing between the subplots. Show activity on this post. Using subplots_adjust(hspace=0) or a very small number ( hspace=0.001 ) will completely remove the whitespace between the subplots, whereas hspace=None does not.
Padding = 'none'; t. TileSpacing = 'none'; Note that the last two commands get rid of all the space between the tiled plots.
subplots_adjust() Method to Change Space Between Subplots in Matplotlib. We can use the plt. subplots_adjust() method to change the space between Matplotlib subplots. wspace and hspace specify the space reserved between Matplotlib subplots.
When you call update, you're applying those parameters to all of the subplots in that particular gridspec. If you want to use different parameters for different subplots, you can make multiple gridspecs. However, you'll need to make sure they are the correct size and don't overlap. One way do to that is with nested gridspecs. Since the total height of the bottom two plots is 6 times the top, the outer gridspec will have a height ratio of [1, 6].
import matplotlib.pyplot as plt import matplotlib.gridspec as gridspec def do_stuff(cell): #just so the plots show up ax = plt.subplot(cell) ax.plot() ax.get_xaxis().set_visible(False) ax.get_yaxis().set_visible(False) plt.subplots_adjust(hspace=0.0) #make outer gridspec outer = gridspec.GridSpec(2, 1, height_ratios = [1, 6]) #make nested gridspecs gs1 = gridspec.GridSpecFromSubplotSpec(1, 1, subplot_spec = outer[0]) gs2 = gridspec.GridSpecFromSubplotSpec(2, 1, subplot_spec = outer[1], hspace = .05) for cell in gs1: do_stuff(cell) for cell in gs2: do_stuff(cell) plt.show()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With