堆积条形图作为整个matplotlib与字典的百分比

时间:2017-08-04 21:15:13

标签: python matplotlib

我有这样的字典:

{1: {'a': 140, 'c': 173, 't': 128, 'g': 136}, 2: {'a': 145, 'c': 161, 't': 138, 'g': 133}...}

我想将每个字母代表每个键的百分比显示为条形图。因此,键(1,2,3 ......)将是x值,y值将全部为1或100%或其他。

然后,对应于字母a,c,t,g的值将用于构成每个条形的百分比,并且每个字母的颜色不同,我无法弄清楚如何在matplotlib中执行此操作

1 个答案:

答案 0 :(得分:1)

这与pandas

相结合非常简单
import matplotlib
import pandas as pd
%matplotlib inline
​
d = {1: {'a': 140, 'c': 173, 't': 128, 'g': 136}, 2: {'a': 145, 'c': 161, 't': 138, 'g': 133}}

df = pd.DataFrame.from_dict(d, orient='index').apply(lambda r: r/r.sum(), axis=1)
​
ax = df.plot(kind='bar', rot=0, ylim=(0, 0.4))
ax.set_xlabel('x axis')
ax.set_ylabel('y axis')

enter image description here