【问题标题】:How to remove gaps between bars in Matplotlib bar chart如何消除 Matplotlib 条形图中条形之间的间隙
【发布时间】:2013-12-25 14:07:00
【问题描述】:

我正在 Matplotlib 中制作条形图,调用如下:

xs.bar(bar_lefts, bar_heights, facecolor='black', edgecolor='black')

我得到一个如下所示的条形图:

我想要的是连续条之间没有白色间隙的,例如更像这样:

有没有办法在 Matplotlib 中使用 bar() 函数来实现这一点?

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    width=1.0 作为关键字参数添加到bar()。例如。

    xs.bar(bar_lefts, bar_heights, width=1.0, facecolor='black', edgecolor='black').

    这将垂直填充条形间隙。

    【讨论】:

    • width=?。上面的 sn-p 中断,因为宽度不是作为关键字参数给出,而是作为变量(不存在)。
    • @Bryce Thomas:如果你只写 width ,我认为它需要 width=1 (对我来说它有效)。那么,如果 width=1 ,它可以按你的意愿工作吗?
    • 很公平,我很惊讶它在你的端工作。在我的系统上,它(几乎)是一个语法错误,因为该语言将宽度解释为一个未命名的参数,并且它显然无法在我的程序中找到任何名为宽度的变量。是的,width=1 似乎符合我的要求。
    • 一旦我对您的答案所做的编辑经过同行评审,我就会这样做。
    • 谢谢!那救了我的命。
    【解决方案2】:

    问这个问题已经 8 年了,matplotlib API 现在有内置方法来生成填充的、无间隙的条:pyplot.step()pyplot.stairs(),参数为 fill=True

    请参阅 the docs 以获得更全面的比较,但主要区别在于 step() 使用 N x 和 N y 值定义步位置,就像 plot() 一样,而 stairs() 定义步具有 N 个高度和 N+1 个边缘的位置,例如 hist() 返回的位置。这是一个微妙的区别,我认为这两种工具可以创建相同的输出。

    【讨论】:

    • 谢谢。条形可以工作,但即使条形宽度设置为 1,它也会在保存的 pdf 中留下一些几乎看不到的间隙。
    【解决方案3】:

    只需将宽度 1 设置为条数,因此:

    width = 1 / len(bar_lefts)
    xs.bar(bar_lefts, bar_heights, width=width, color='black')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-06
      • 2017-03-27
      • 2022-01-17
      相关资源
      最近更新 更多