python - 如何删除 Matplotlib 条形图中宽度不等的条形之间的间隙
问题描述
我正在尝试在 matplotlib(或另一个 python 绘图库)中创建一个按顺序供应曲线条形图。
每个条形的宽度代表该观测值的大小(在本例中为安装的屋顶太阳能),y 轴表示成本,X 轴表示在特定成本或低于特定成本的所有观测值的累积大小。这创建了一条看起来像这样的供给曲线:
请注意,每个条的宽度都不相同,并且对观察结果进行了排序,因此没有一个条会比其左侧的任何条短。
这样的功能是否存在于任何绘图包中,或者我应该编写一个脚本来动态计算每个条的必要位置,具体取决于两侧条的宽度?
解决方案
这是我拼凑起来的一个快速解决方案,尽管我觉得gaps=0
matplotlib 中可能存在一个我找不到文档的选项。
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)
推荐阅读
- java - 如何从 Netbeans 中使用 Java 的 Web 服务获得答案?
- python - plotnine 不添加图例
- c++ - 内部函数是否在 C++ 中自动声明?
- drupal - 我如何为经过身份验证的用户提供管理员链接(管理员的人员选项卡)[Drupal]
- python-3.x - Azure Functions 日志记录 - 模块级别的日志信息
- python - 如何将类类型转换为字符串 selenium python
- java - 尝试加载序列化对象时遇到问题
- node.js - node.js:向 TCP 套接字发送和接收字节
- javascript - bootbox 正在停止下拉菜单工作
- sql - 删除重复的电子邮件记录