2015-12-08 5 views
1

Я пытаюсь воссоздать это:Показать оси Y линии сетки Участок

enter image description here

Мой код почти нет:

def make_bar(g_title, y_title, x_labels, data_series, file_name, cat_title, 
      x_title): 
    rcParams['figure.figsize'] = 6.4125, 3.6 
    n_groups = 13 
    bar_width = 0.35 
    opacity = 0.4 
    fig, ax = plt.subplots() 
    fig.subplots_adjust(right=1.5) # adjust 0.8 for your needs. 
    index = np.arange(n_groups) 
    plt.bar(index, tuple(data_series[0][1]), bar_width, 
        alpha=opacity, 
        color='b', 
        label='{}'.format(data_series[0][0])) 
    plt.bar(index + bar_width, tuple(data_series[1][1]), bar_width, 
        alpha=opacity, 
        color='r', 
        label='{}'.format(data_series[1][0])) 
    box = ax.get_position() 
    ax.set_position([box.x0, box.y0, box.width * 0.6, box.height]) 
    plt.xlabel(x_title, fontsize=10) 
    plt.ylabel(y_title, fontsize=10) 
    plt.title(g_title, fontsize=11) 
    plt.xticks(index + bar_width, tuple(x_labels), fontsize=8) 
    plt.yticks(fontsize=8) 
    plt.axis('tight') 
    lgd = plt.legend(fontsize=8, bbox_to_anchor=(1.15, 0.5)) 
    plt.tight_layout() 
    plt.savefig('{}/{}.png'.format(images, file_name), dpi=100, format='png', 
       bbox_extra_artists=(lgd,), bbox_inches='tight') 
    plt.close('all') 
    return 

Выход:

enter image description here

Мне нужны линии сетки оси y, как оригинал, и не знаю, как получить там. Я исчерпал все свои идеи. Помогите?

+2

http://stackoverflow.com/questions/16074392/getting -vertical-gridlines-to-seem-in-line-plot-in-matplotlib – jonchar

+0

Похож на вертикальный == горизонтальный сейчас: \ – talentlesshack

ответ

3

Вы ищете plt.grid. Так как вы хотите только ось Y сетки, однако, вы должны указать axis ключевое слово, так что это будет выглядеть следующим образом:

plt.grid(color='black', which='major', axis='y', linestyle='solid') 

See here for more info.

+0

Это привело меня к линиям, но они не отстают, как в моем примере. http://i.imgur.com/U69O4su.png Как я мог это сделать? Я пробовал [line.set_zorder (3) для строки в ax.lines] без везения. – talentlesshack

+0

Также попытался добавить zorder к вашему коду. Устал все 3 без удачи – talentlesshack

+0

Я пытался ответить на этот вопрос, но на данный момент у меня возникают проблемы с доступом к документации matplotlib, и ни одно из решений, о которых я знаю, работает на меня. Другое дело, вы можете попробовать установить 'ax.set_axisbelow (True)'. Похоже, я почему-то не работаю для меня, но, может быть, вам повезет больше. – Vorticity

Смежные вопросы