Настройка почты SSRS: хостинг обмен

@bogatron уже дал ответ, предложенный matplotlib docs , который создает правильную высоту, но он вводит другую проблему. Теперь ширина цветной панели (а также пространство между цветом и сюжетом) изменяется с шириной графика. Другими словами, соотношение сторон цветовой панели больше не фиксируется.

Чтобы получить как правильную высоту , так и заданное соотношение сторон, вам нужно углубиться в глубь таинственный axes_grid1 модуль.

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable, axes_size
import numpy as np

aspect = 20
pad_fraction = 0.5

ax = plt.gca()
im = ax.imshow(np.arange(200).reshape((20, 10)))
divider = make_axes_locatable(ax)
width = axes_size.AxesY(ax, aspect=1./aspect)
pad = axes_size.Fraction(pad_fraction, width)
cax = divider.append_axes("right", size=width, pad=pad)
plt.colorbar(im, cax=cax)

Обратите внимание, что это указывает ширину цветной панели по height графика (в отличие от ширины фигуры, как это было раньше).

Интервал между цветовой панелью и графикой теперь можно указывается в виде доли ширины цветной панели, которая является ИМХО намного более значимым числом, чем доля ширины фигуры.

ОБНОВЛЕНИЕ :

Я создал записную книжку IPython по теме , где я упаковал вышеуказанный код в легко повторно используемую функцию:

import matplotlib.pyplot as plt
from mpl_toolkits import axes_grid1

def add_colorbar(im, aspect=20, pad_fraction=0.5, **kwargs):
    """Add a vertical color bar to an image plot."""
    divider = axes_grid1.make_axes_locatable(im.axes)
    width = axes_grid1.axes_size.AxesY(im.axes, aspect=1./aspect)
    pad = axes_grid1.axes_size.Fraction(pad_fraction, width)
    current_ax = plt.gca()
    cax = divider.append_axes("right", size=width, pad=pad)
    plt.sca(current_ax)
    return im.axes.figure.colorbar(im, cax=cax, **kwargs)

Он может можно использовать следующим образом:

im = plt.imshow(np.arange(200).reshape((20, 10)))
add_colorbar(im)

0
задан EagerDave 10 February 2015 в 09:44
поделиться