Параметры функции Python Subplot - PullRequest
2 голосов
/ 20 февраля 2011

Я испытываю трудности с вводом параметров для функции под-сюжета python.

Я хочу построить 4 графика в одном файле изображения по следующим критериям

left
space
     right
space
left
space
     right

Я пробовал разные способы 3 чисел, но вывод не отображается правильно.

Ответы [ 3 ]

7 голосов
/ 20 февраля 2011

Вы имеете в виду что-то подобное?

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

2 голосов
/ 06 августа 2014

Ну, не так легко найти документацию, касающуюся шаблона функции подслота, следующим образом:

subplot (number_of_graphs_horizontal, number of graphs_vertical, index)

Давайте рассмотрим код Джо Кингтона выше:

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 и т. Д. Представляют собой графики, которые вы добавляете в индексные позиции 1018 *, которые вы можете прочитать как третий параметр.Вы считаете слева направо по порядку строк.

Надеюсь, это помогло:)

2 голосов
/ 20 февраля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...