我想使用matplotlib bar plot绘制以下形式的数据:
data = {'Room A':
{'Shelf 1':
{'Milk': 10,
'Water': 20},
'Shelf 2':
{'Sugar': 5,
'Honey': 6}
},
'Room B':
{'Shelf 1':
{'Wheat': 4,
'Corn': 7},
'Shelf 2':
{'Chicken': 2,
'Cow': 1}
}
}
条形图应该看起来
从x轴上的标签可以看到条形组。有没有什么方法可以用matplotlib做到这一点?
2条答案
按热度按时间deyfvvtc1#
由于我在matplotlib中找不到内置的解决方案,我编写了自己的代码:
mk_groups
函数接受一个字典(或任何带有items()方法的东西,如collections.OrderedDict
),并将其转换为数据格式,然后用于创建图表。它基本上是一个列表的形式:add_line
函数在子图中的指定位置(以轴坐标为单位)创建一条垂直线。label_group_bar
函数接受一个字典,并在子图中创建一个条形图,下面是标签。然后,示例的结果看起来是like this。更简单或更好的解决方案和建议仍然非常感谢。
wecizke32#
我一直在寻找这个解决方案一段时间。我对它进行了一些修改,以处理pandas数据表。分享一下才公平。