繁体   English   中英

如何在Matplotlib条形图中删除宽度不等的条之间的间隙

[英]How to remove gaps between bars with unequal widths in Matplotlib bar chart

我正在尝试在matplotlib(或其他python绘图库)中创建一个metrit-order供应曲线条形图。

每个条形的宽度表示观察的大小(在这种情况下,安装的屋顶太阳能),y轴表示成本,X轴表示在特定成本或低于特定成本的所有观测的累积大小。 这会创建一个如下所示的供应曲线:

在此输入图像描述

请注意,每个条形的宽度都不相同,并且观察结果的排序使得任何条形图都不会比其左边的任何条形条纹更短。

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

这是一个快速的解决方案,我把它放在一起,虽然我觉得在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)

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM