【问题标题】:How to remove gaps between bars with unequal widths in Matplotlib bar chart如何删除 Matplotlib 条形图中宽度不等的条形之间的间隙
【发布时间】:2019-10-31 09:13:35
【问题描述】:

我正在尝试在 matplotlib(或另一个 python 绘图库)中创建一个计量顺序供应曲线条形图。

每个条形的宽度表示该观测值的大小(在本例中为安装的屋顶太阳能),y 轴表示成本,X 轴表示所有观测值的累积大小,或低于具体成本。这创建了一条看起来像这样的供给曲线:

请注意,每个条形的宽度都不相同,并且观察结果已排序,因此没有一个条形会比其左侧的任何条形短。

这样的功能是否存在于任何绘图包中,或者我是否应该编写一个脚本,根据两侧条的宽度动态计算每个条的必要位置?

【问题讨论】:

  • 您不需要将条形图在它们的坐标处居中,也许对于这样的曲线最好让它们左对齐,这样宽度等于连续点之间的差。

标签: python matplotlib


【解决方案1】:

这是我拼凑起来的一个快速解决方案,尽管我觉得 matplotlib 中可能存在一个 gaps=0 选项,但我找不到相关文档。

fig, ax = plt.subplots()

cost = [1, 1.5, 2, 3, 4]
width = [1.0, 5.0, 10.0, 15.0, 10.0]
y_pos = [1,2,3,4,5]
colors = ['red','blue','green','red','blue']
bars = ['A','B','C','D','E']

relative_positions = []
relative_position = 0
previous_width = 0
for w in width:
    print(w, w/2)
    relative_position = float(relative_position + (previous_width/2) + (w/2))
    print(w, relative_position)
    previous_width = w
    relative_positions.append(relative_position)


plt.bar(relative_positions, cost, width=width, color=colors)
plt.xticks(relative_positions, bars)

【讨论】:

    猜你喜欢
    • 2013-12-25
    • 2018-05-06
    • 2023-03-24
    • 2021-08-05
    • 2022-01-17
    • 2017-03-27
    • 2012-07-05
    • 2016-03-17
    • 2016-02-06
    相关资源
    最近更新 更多