Matplotlib双条形图:酒吧未正确绘制

时间:2013-12-03 11:15:57

标签: python matplotlib plot bar-chart

我试图为每个数据集绘制一个帧(“n”和“m”)的两个不同数据列,作为彼此相邻的两个不同颜色的条。

def graphPlot(data, size=None):
    pos = arange(len(data))+.5    # the bar centers on the y axis
    figure(figsize=size)
    xscale("log")
    barh(pos, data["n"], align='center', height=0.25, color="darkgrey")    
    barh(pos - 0.25, data["m"], align='center', height=0.25, color="lightblue")    
    yticks(pos, data["graph"])
    xlabel("")
    grid(True)

但事实证明是这样的:

enter image description here

为什么没有正确绘制条形图?我的职位价值是错的吗?

1 个答案:

答案 0 :(得分:1)

这是导致问题的xscale("log")电话。您需要缩放图表,然后将log=True传递给barh来电:

def graphPlot(data, size=None):
    pos = arange(len(data))+.5    # the bar centers on the y axis
    figure(figsize=size)
    #xscale("log")
    barh(pos, data["n"], align='center', height=0.25, color="darkgrey", log=True)    
    barh(pos - 0.25, data["m"], align='center', height=0.25, color="lightblue", log=True)    
    yticks(pos, data["graph"])
    xlabel("")
    grid(True)

另一种方法是使用pandas dataframe来保存您的数据,然后只需致电df[['ser1', 'ser2']].plot(kind='barh', logx=True)