【发布时间】:2013-12-25 14:07:00
【问题描述】:
我正在 Matplotlib 中制作条形图,调用如下:
xs.bar(bar_lefts, bar_heights, facecolor='black', edgecolor='black')
我得到一个如下所示的条形图:
我想要的是连续条之间没有白色间隙的,例如更像这样:
有没有办法在 Matplotlib 中使用 bar() 函数来实现这一点?
【问题讨论】:
标签: python matplotlib
我正在 Matplotlib 中制作条形图,调用如下:
xs.bar(bar_lefts, bar_heights, facecolor='black', edgecolor='black')
我得到一个如下所示的条形图:
我想要的是连续条之间没有白色间隙的,例如更像这样:
有没有办法在 Matplotlib 中使用 bar() 函数来实现这一点?
【问题讨论】:
标签: python matplotlib
将width=1.0 作为关键字参数添加到bar()。例如。
xs.bar(bar_lefts, bar_heights, width=1.0, facecolor='black', edgecolor='black').
这将垂直填充条形间隙。
【讨论】:
width=?。上面的 sn-p 中断,因为宽度不是作为关键字参数给出,而是作为变量(不存在)。
问这个问题已经 8 年了,matplotlib API 现在有内置方法来生成填充的、无间隙的条:pyplot.step() 和 pyplot.stairs(),参数为 fill=True。
请参阅 the docs 以获得更全面的比较,但主要区别在于 step() 使用 N x 和 N y 值定义步位置,就像 plot() 一样,而 stairs() 定义步具有 N 个高度和 N+1 个边缘的位置,例如 hist() 返回的位置。这是一个微妙的区别,我认为这两种工具可以创建相同的输出。
【讨论】:
只需将宽度 1 设置为条数,因此:
width = 1 / len(bar_lefts)
xs.bar(bar_lefts, bar_heights, width=width, color='black')
【讨论】: