неравномерно центрированные сюжеты в matplotlib в Python? - PullRequest
2 голосов
/ 14 июня 2010

Я строю простую пару подзаговоров в matplotlib, которые по некоторым причинам неравномерно центрированы.Я строю их следующим образом:

plt.figure()
# first subplot
s1 = plt.subplot(2, 1, 1)
plt.bar([1, 2, 3], [4, 5, 6])
# second subplot
s2 = plt.subplot(2, 1, 2)
plt.pcolor(rand(5,5))

# add colorbar
plt.colorbar()

# square axes
axes_square(s1)
axes_square(s2)

где axes_square просто:

def axes_square(plot_handle):
  plot_handle.axes.set_aspect(1/plot_handle.axes.get_data_ratio()) 

График, который я получаю, прикреплен.Верхний и нижний участки расположены неравномерно по центру.Я бы хотел, чтобы их яси были выровнены, а их ящики выровнены.

Если я уберу вызов plt.colorbar (), графики станут центрированными.Как можно расположить графики по центру, пока цветовая полоса pcolor еще отображается?Я хочу, чтобы оси были в центре и чтобы цветная полоса находилась вне этого выравнивания, либо слева, либо справа от матрицы pcolor.

изображение ссылки на графики

Изображение нецентрированных участков в matplotlib http://i45.tinypic.com/2i1kvtu.png

спасибо.

Ответы [ 2 ]

2 голосов
/ 14 июня 2010

Ну, это, вероятно, не совсем то, что вы хотите, но это сработает:

from numpy.random import rand
import matplotlib.pyplot as plt

plt.figure()
# first subplot
s1 = plt.subplot(2, 2, 2)
plt.bar([1, 2, 3], [4, 5, 6])
# second subplot
s2 = plt.subplot(2, 2, 4)
plt.pcolor(rand(5,5))

# square axes
axes_square(s1)
axes_square(s2)

s_fake = plt.subplot(2, 2, 3)
s_fake.set_axis_off()
# add colorbar
plt.colorbar()

Он просто создает ложную пару ячеек слева и ничего в них не отображает,Не красиво, но это работает.;)

Кроме того, я предполагаю, что эти два импорта были неявными в вашем коде ...

0 голосов
/ 14 июня 2010

Дайте cax аргумент для цветовой шкалы, чтобы указать, где вам нравится цветовая полоса:

plt.colorbar(cax=plt.gcf().add_axes((0.75,0.1,0.05,0.3)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...