2015-12-08 92 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-appear-in-line-plot-in-matplotlib – jonchar

+0

看起来像vertical == horizo​​ntal现在:\ – 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)for line.line]没有运气。 – talentlesshack

+0

也尝试添加zorder到您的代码。累了所有3没有运气 – talentlesshack

+0

我一直在试图回答这个问题,但我目前在访问matplotlib文档时遇到问题,没有任何我知道的解决方案正在为我工​​作。另一件你可以尝试设置'ax.set_axisbelow(True)'。由于某种原因,我似乎没有为我工作,但也许你会有更好的运气。 – Vorticity