【问题标题】:Matplotlib double bar chart: Bars not properly drawnMatplotlib 双条形图:条形图未正确绘制
【发布时间】:2013-12-03 11:15:56
【问题描述】:

我正在尝试将每个数据集的帧的两个不同数据列(“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)

但结果是这样的:

为什么条形图没有正确绘制?我的位置值错了吗?

【问题讨论】:

    标签: python matplotlib plot bar-chart


    【解决方案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)

    【讨论】: