2017-08-30 21 views
0

我想向特定的matplotlib图中添加不同大小的子图,但我不确定如何这样做。使用“subplot2grid”方法将子图添加到特定图形

import matplotlib.pyplot as plt 

fig = plt.figure() 

ax1 = plt.subplot2grid((2, 2), (0, 0), colspan=2) 
ax1 = plt.subplot2grid((2, 2), (1, 1)) 

plt.show() 

上面的代码建立一个数字,并增加了两个副区到该图中,每个具有不同尺寸的:在有只存在一个图中,“subplot2grid”的情况下可以如下利用。现在,我的问题出现在有多个数字的情况下 - 我找不到使用“subplot2grid”将子图添加到特定图的适当方式。使用更简单的“add_subplot”的方法,可以添加次要情节到特定的数字,如在下面的代码看出:

import matplotlib.pyplot as plt 

fig1 = plt.figure() 
fig2 = plt.figure() 

ax1 = fig1.add_subplot(2, 2, 1) 
ax2 = fig1.add_subplot(2, 2, 4) 

plt.show() 

我寻找类似方法,用于将不同尺寸的副区(优选使用某种的网格管理器,例如“subplot2grid”)到特定的图形。我对使用plt。“x”样式有所保留,因为它在创建的最后一个数字上运行 - 我的代码将有几个数字,所有这些数字都需要具有不同大小的子图。

由于提前,

柯蒂斯M.

+1

您可以设置目前的数字,那么你的plt。“x”风格的命令会转到你选择的任何一个数字。 https://stackoverflow.com/questions/7986567/matplotlib-how-to-set-the-current-figure#7987462 – RuthC

回答

1

未来(可能是即将发布?),subplot2grid 将采取fig参数

subplot2grid(shape, loc, rowspan=1, colspan=1, fig=None, **kwargs) 

使得下列会可能的:

import matplotlib.pyplot as plt 

fig1=plt.figure() 
fig2=plt.figure() 

ax1 = plt.subplot2grid((2, 2), (0, 0), colspan=2, fig=fig1) 
ax2 = plt.subplot2grid((2, 2), (1, 1), fig=fig1) 

plt.show() 

截至目前(版本2.0.2),这还不可能。另外,您也可以手动定义底层GridSpec

import matplotlib.pyplot as plt 
from matplotlib.gridspec import GridSpec 

fig1=plt.figure() 
fig2=plt.figure() 

spec1 = GridSpec(2, 2).new_subplotspec((0,0), colspan=2) 
ax1 = fig1.add_subplot(spec1) 
spec2 = GridSpec(2, 2).new_subplotspec((1,1)) 
ax2 = fig1.add_subplot(spec2) 

plt.show() 

或者你可以简单的设置目前的数字,这样plt.subplot2grid将上精确的数字工作(如图this question

import matplotlib.pyplot as plt 

fig1=plt.figure(1) 
fig2=plt.figure(2) 

# ... some other stuff 

plt.figure(1) # set current figure to fig1 
ax1 = plt.subplot2grid((2, 2), (0, 0), colspan=2) 
ax2 = plt.subplot2grid((2, 2), (1, 1)) 

plt.show() 
+0

GridSpec的手动定义工作得很好。谢谢! –