Есть ли способ сделать несколько горизонтальных боксов в matplotlib? - PullRequest
4 голосов
/ 12 июля 2011

Я пытаюсь создать фигуру matplotlib, которая будет иметь несколько горизонтальных боксов, сложенных друг на друга. Документация показывает, как создать один горизонтальный блок-график и как сделать несколько вертикально ориентированных графиков в этом разделе.

Я пытался использовать подзаговоры, как в следующем коде:

import numpy as np
import pylab as plt

totfigs = 5

plt.figure()
plt.hold = True

for i in np.arange(totfigs):    
    x = np.random.random(50)
    plt.subplot('{0}{1}{2}'.format(totfigs,1,i+1))
    plt.boxplot(x,vert=0)
plt.show()

Мой вывод дает только один горизонтальный блок-график.

Любые предложения кто-нибудь?

Редактировать : Благодаря @joaquin я исправил линию вызова plt.subplot. Теперь версия с субплотом работает, но все же хотелось бы, чтобы все графические сюжеты были на одной фигуре ...

Ответы [ 2 ]

5 голосов
/ 12 июля 2011

Если я вас правильно понимаю, вам просто нужно передать boxplot список (или двумерный массив), содержащий каждый массив, который вы хотите построить.

import numpy as np
import pylab as plt

totfigs = 5

plt.figure()
plt.hold = True
boxes=[]
for i in np.arange(totfigs):    
    x = np.random.random(50)
    boxes.append(x)

plt.boxplot(boxes,vert=0)
plt.show()

enter image description here

1 голос
/ 12 июля 2011

try:

plt.subplot('{0}{1}{2}'.format(totfigs, 1, i+1)    # n rows, 1 column

или

plt.subplot('{0}{1}{2}'.format(1, totfigs, i+1))    # 1 row, n columns

из строки документации:

подзаговор (* args, ** kwargs)

Создайте команду subplot, создавая оси с ::

subplot (numRows, numCols, plotNum)

, где plotNum = 1 - это первый номер графика и увеличивается plotNums сначала заполните строки.max ( plotNum ) == numRows * numCols

, если вы хотите их все вместе, сдвигайте их удобно.Как пример с постоянным смещением:

for i in np.arange(totfigs):    
    x = np.random.random(50)
    plt.boxplot(x+(i*2),vert=0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...