Python Subplot函数参数

时间:2011-02-20 00:57:41

标签: python plot scipy

我很难为python subplot函数添加参数。

我想要的是使用以下标准在同一图像文件上绘制4个图形

left
space
     right
space
left
space
     right

我尝试了3种数字的不同方法,但输出没有正确显示。

3 个答案:

答案 0 :(得分:7)

你的意思是这样吗?

import matplotlib.pyplot as plt

fig = plt.figure()
ax1 = fig.add_subplot(4,2,1)
ax2 = fig.add_subplot(4,2,4)
ax3 = fig.add_subplot(4,2,5)
ax4 = fig.add_subplot(4,2,8)

fig.subplots_adjust(hspace=1)

plt.show()

enter image description here

答案 1 :(得分:2)

Matplotlib提供了几种方法来处理故意在一个页面上放置图表;我认为最好的是 gridspec ,我相信它首先出现在1.0版本中。顺便说一下,另外两个是(i)直接索引子图和(ii)新的 ImageGrid 工具包。)

GridSpec 就像用于将小部件放置在父框架中的GUI工具包中的基于网格的打包程序一样,因此至少出于这个原因,它似乎是最容易使用的,也是三个位置中最可配置的技术。

import numpy as NP
import matplotlib.pyplot as PLT
import matplotlib.gridspec as gridspec
import matplotlib.cm as CM

V = 10 * NP.random.rand(10, 10)  # some data to plot

fig = PLT.figure(1, (5., 5.))  # create the top-level container

gs = gridspec.GridSpec(4, 4)   # create a GridSpec object

# for the arguments to subplot that are identical across all four subplots,
# to avoid keying them in four times, put them in a dict 
# and let subplot unpack them
kx = dict(frameon = False, xticks = [], yticks = [])

ax1 = PLT.subplot(gs[0, 0], **kx)
ax3 = PLT.subplot(gs[2, 0], **kx)
ax2 = PLT.subplot(gs[1, 1], **kx)
ax4 = PLT.subplot(gs[3, 1], **kx)

for itm in [ax1, ax2, ax3, ax4] :
    itm.imshow(V, cmap=CM.jet, interpolation='nearest')

PLT.show()


除了在“棋盘”配置中安排四个图表(根据您的问题),我还没有尝试调整此配置,但这很容易做到。如,

# to change the space between the cells that hold the plots:
gs1.update(left=.1, right=,1, wspace=.1, hspace=.1)

# to create a grid comprised of varying cell sizes:
gs = gridspec.GridSpec(4, 4, width_ratios=[1, 2], height_ratios=[4, 1])

enter image description here

答案 2 :(得分:2)

嗯,关于子区域功能模板的不那么容易找到的文档如下:

subplot (number_of_graphs_horizontal, number of graphs_vertical, index)

让我们调查上面Joe Kington的代码:

import matplotlib.pyplot as plt

fig = plt.figure()
ax1 = fig.add_subplot(4,2,1)
ax2 = fig.add_subplot(4,2,4)
ax3 = fig.add_subplot(4,2,5)
ax4 = fig.add_subplot(4,2,8)

fig.subplots_adjust(hspace=1)

plt.show()

您告诉 matplotlib 您希望网格包含 4行和2列图表。 ax1 ax2 等是您在索引位置添加的图形,您可以将其读作第三个参数。你以行为方式从左到右计数。

我希望有所帮助:)