控制用于matplotlib子图的wspace

5 python numpy matplotlib ipython

我在想:我有一个1 row, 4 column情节.但是,前三个子图共享相同的yaxes范围(即它们具有相同的范围并代表相同的事物).第四个没有.

我想要做的是改变wspace三个第一个图,使它们接触(并分组),然后第四个图有点空间,没有yaxis标签的重叠等.

我可以这么简单地做一些photoshop编辑......但我希望有一个编码版本.我怎么能这样做?

DrV*_*DrV 8

你最想要的是GridSpec.它使您可以自由调整wspace子图组.

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import numpy as np

fig = plt.figure()
# create a 1-row 3-column container as the left container
gs_left = gridspec.GridSpec(1, 3)

# create a 1-row 1-column grid as the right container
gs_right = gridspec.GridSpec(1, 1)

# add plots to the nested structure
ax1 = fig.add_subplot(gs_left[0,0])
ax2 = fig.add_subplot(gs_left[0,1])
ax3 = fig.add_subplot(gs_left[0,2])

# create a 
ax4 = fig.add_subplot(gs_right[0,0])

# now the plots are on top of each other, we'll have to adjust their edges so that they won't overlap
gs_left.update(right=0.65)
gs_right.update(left=0.7)

# also, we want to get rid of the horizontal spacing in the left gridspec
gs_left.update(wspace=0)
Run Code Online (Sandbox Code Playgroud)

现在我们得到:

在此输入图像描述

当然,你会想要对标签等做些什么,但现在你有可调节的间距.

GridSpec可以用来产生一些非常复杂的布局.看一下:

http://matplotlib.org/users/gridspec.html