2014-11-09 1 views
0

Я делаю инструмент для автоматизации нескольких графиков с использованием Matplotlib, для каждой проблемы, с которой я столкнулся, обычно после некоторых исследований я в конечном итоге нахожу решение, но здесь я думаю, m застрял.Matplotlib, Положение положения графика в изображении

1 - Я хочу, чтобы в сгенерированном файле png был вид смещения перед началом графика слева, где я могу вставлять некоторые текстовые объекты. Как это можно сделать?

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

Главным образом я хочу, чтобы иметь возможность определять положение графика в файле изображения. Вот пример того, что я сейчас have, и из чего I want.

EDIT:

def plot_bar(): 


    fig = plt.figure(figsize=(600/96, 360/96), dpi = 96) 


# Setting the padding between the ticks' labels and the axes 
    mpl.rcParams['xtick.major.pad']='10' 

    ax = plt.gca() 

    ax.spines['top'].set_visible(False) 
    ax.spines['right'].set_visible(False) 
    ax.spines['left'].set_visible(False) 
    ax.spines['bottom'].set_visible(False) 


    ax.axes.get_yaxis().set_visible(False) 

    mpl.rcParams['axes.facecolor'] = 'white' 
    mpl.rcParams["figure.facecolor"]= 'white' 
    mpl.rcParams["savefig.facecolor"]= 'white' 
    Values1 = (10 , 25 , 30 , 40) 
    Values2 = (40 , 3 , 10 , 6) 

    N = 4 

    ind = np.arange(N) 

    width = 0.7 
p1 = plt.bar(ind, Values1, width, color='#00A79A', ec='#00A79A') 
    p2 = plt.bar(ind, Values2, width, color='#8FDCD6', bottom = Values1, ec='#8FDCD6') 


    plt.xticks(ind+width/2., ('Fuel\n\n dollars \n\n dollars', 'Tires', 'Roadcalls', 'Maintenance')) 
    plt.yticks(np.arange(0,81,10)) 

    # Removing Tick lines from axes 
    for tic in ax.xaxis.get_major_ticks(): 
    tic.tick1On = tic.tick2On = False 

    for tic in ax.yaxis.get_major_ticks(): 
    tic.tick1On = tic.tick2On = False 
    plt.savefig("fichier.png") 
+0

Можете ли вы дать нам код, который вы используете для формирования фигуры? – grovesNL

+0

Конечно, я добавлю. –

+0

Не могли бы вы сообщить нам, если предлагаемое решение работает для вас? Если нет, мы можем их соответствующим образом обновить. – grovesNL

ответ

0

Вы можете использовать subplots_adjust добавить интервал. tight_layout также расширит вашу коробку, чтобы соответствовать тексту, отсутствующему на графике раньше («доллары»).

Что касается остальной части сюжета, достаточно добавить ярлыки. Например, цикл for ниже добавляет итоговые значения сверху каждого столбца (аналогично this demo).

for bar in p2: 
    height = bar.get_height() + p1[bar.get_x()].get_height() 
    ax.text(bar.get_x()+bar.get_width()/2., 1.05*height, '%d'%int(height), 
      ha='center', va='bottom') 
plt.tight_layout() 
plt.subplots_adjust(left=0.3, bottom=0.3) 
+0

Спасибо, это именно то, что я хотел. –

0

Попробуйте использовать метод subplots_adjust фигуры:

fig.subplots_adjust(left=0.25, bottom=0.25)