Python Matplotlib条形图,条形图相互重叠,如何创建空间

Python Matplotlib条形图,条形图相互重叠,如何创建空间,python,matplotlib,Python,Matplotlib,我有这个功能,可以为一些延迟值绘制条形图: import pandas as pd import numpy as np %matplotlib inline import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt def plot_bar(g): auto = [1.36, 5.34, 10.2, 16.48, 24.3, 45.6, 83.89, 155.19, 289.68, 598.85

我有这个功能,可以为一些延迟值绘制条形图:

import pandas as pd
import numpy as np
%matplotlib inline
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt 


def plot_bar(g):
    auto = [1.36, 5.34, 10.2, 16.48, 24.3, 45.6, 83.89, 155.19, 289.68, 598.85]
    four = [1.81, 5.57, 11.48, 18, 27.69, 47.72, 89.11, 164.74, 315.24, 637.89]
    eight = [1.44, 5.45, 8.56, 16.64, 26.85, 43.44, 82.41, 152.32, 294.11, 598.57]
    sixteen = [2.29, 5.79, 19.99, 18.44, 33.73, 75.31, 177.74, 365.39, 774.57, 1619.99]
    thirtytwo = [3.62, 13.84, 25.39, 42.21, 80.14, 150.41, 311.46, 645.37, 1330.94, 2688.48]   

    N = 10
    fig, ax = plt.subplots()

    ind = np.arange(N)    # the x locations for the groups
    width = 0.30         # the width of the bars
    p1 = ax.bar(ind, auto, width, color='r')
    p2 = ax.bar(ind+width, four, width, color='y')
    p3 = ax.bar(ind+width+width, eight, width, color='b')
    p4 = ax.bar(ind+width+width+width, sixteen, width, color='k')
    p5 = ax.bar(ind+width+width+width+width, thirtytwo, width, color='g')



    #ax.set_title('Scores by group and gender')
    ax.set_xticks(ind * (5 * width))
    ax.set_xticklabels(('1MB', '4MB', '8MB', '16MB', '32MB', '64MB', '128MB', '256MB', '512MB', '1GB'))

    plt.xticks(rotation=75)

    ax.legend((p1[0], p2[0], p3[0], p4[0], p5[0]), ('Automatic t=8', 't=4','t=8', 't=16', 't=32'))
    ax.autoscale_view()
    plt.ylabel('time (ms)')
    plt.xlabel('Data Size')
    plt.yscale("log", nonposy='clip')
    plt.tight_layout()
    fig.savefig('./graphs/nope_{!s}.eps'.format(g))
结果是:

我希望避免钢筋相互重叠的情况。我试过身材大小,但运气不好。我还尝试更改
设置\u xticks
以了解可用性,但我不知道如何解决此问题


提交的代码应该有效,请给出建议

基本上,你的酒吧宽度太宽了。XTICK的宽度为1个单位,您试图绘制5条宽度为3的条形图。3条宽度超过1个单位,因此重叠。将宽度减少到0.2,持续5小节

width = 0.20         # the width of the bars
输出:


基本上,您的酒吧宽度太宽了。XTICK的宽度为1个单位,您试图绘制5条宽度为3的条形图。3条宽度超过1个单位,因此重叠。将宽度减少到0.2,持续5小节

width = 0.20         # the width of the bars
输出:


另一种替代解决方案是在中心条上使用一个相距较远的x位置。绘图的问题是,条形宽度为0.3,有5个条形,因此5*0.3=每组的总x间距为1.5。由于定心杆的x位置之间的间距为1,因此每组杆之间的重叠为0.5

为了避免这种情况,您可以使用以下方法在x索引之间使用2的间距来对中钢筋。我还注意到,您没有正确使用所有的x标签。添加以下两行使事情看起来很好

ind = np.arange(0,2*N, 2)    # the x locations for the groups
ax.set_xticks(ind + 2*width)

另一种替代解决方案是在中心条上使用一个相距较远的x位置。绘图的问题是,条形宽度为0.3,有5个条形,因此5*0.3=每组的总x间距为1.5。由于定心杆的x位置之间的间距为1,因此每组杆之间的重叠为0.5

为了避免这种情况,您可以使用以下方法在x索引之间使用2的间距来对中钢筋。我还注意到,您没有正确使用所有的x标签。添加以下两行使事情看起来很好

ind = np.arange(0,2*N, 2)    # the x locations for the groups
ax.set_xticks(ind + 2*width)

非常感谢斯科特:)非常感谢斯科特:)