在绘图中调整条形图位置

时间:2015-12-08 17:07:18

标签: python matplotlib

感谢您的时间:

我有一个创建条形图的Flask应用程序。

此功能:

def make_bar(g_title, y_title, x_labels, data_series, file_name, cat_title,
             x_title):
    rcParams['figure.figsize'] = 6.55, 3.8
    n_groups = 13
    bar_width = 0.35
    opacity = 0.4
    fig, ax = plt.subplots()
    index = np.arange(n_groups)
    error_config = {'ecolor': '0.3'}
    plt.bar(index, tuple(data_series[0][1]), bar_width,
                     alpha=opacity,
                     color='b',
                     error_kw=error_config,
                     label='{}'.format(data_series[0][0]))
    plt.bar(index + bar_width, tuple(data_series[1][1]), bar_width,
                     alpha=opacity,
                     color='r',
                     error_kw=error_config,
                     label='{}'.format(data_series[1][0]))
    box = ax.get_position()
    ax.set_position([box.x0, box.y0, box.width * 0.8, 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')
    return

产生这个: okay

但我需要看起来像这样:

better

如何调整代码以使所有内容并排放置?

由于

1 个答案:

答案 0 :(得分:1)

要控制子图的位置以为图例腾出空间,可以使用fig.subplots_adjust

fig.subplots_adjust(right=0.8) # adjust 0.8 for your needs.