在Python中从字典中绘制条形图中的数据对齐

妮芙·R。

我正在尝试使用matplotlib使用2个不同的字典在条形图中绘制2个轴,这些字典具有完全相同的键。我无法确保两个字典的项(键和值)的顺序相同。

代码示例:

ind = numpy.arange(len(types_dict))  # the x locations for the groups
fig, ax = plt.subplots()
rects1 = ax.bar(ind, types_dict.values(), 0.35, color='green')
rects2 = ax.bar(ind+0.35, genome_types_dict.values(), 0.35, color='purple')
plt.xticks(ind+width, types_dict.keys(), fontsize=10)
plt.savefig(output+"bar_" + library_name + ".png")

当打印字典types_dict和generic_types_dict的键时,它们的键顺序不正确,因此它们的值也一样:

types_dict = ['rRNA', 'IGR', '3UTR', 'sRNA', 'tRNA', 'TU', '5UTR', 'AS', 'cis_AS_with_trans_t', 'mRNA', 'other-ncRNA']
genome_types_dict = ['rRNA', 'IGR', '3UTR', '5UTR', 'tRNA', 'TU', 'sRNA', 'AS', 'cis_AS_with_trans_t', 'mRNA', 'other-ncRNA']

寻找两个字典之间对齐的解决方案。

谢谢,

伊恩·坎贝尔

您正在定义列表而不是字典,因为您使用的是方括号。如果您需要字典,则需要将数据包装在{}中。在Python中,除非使用OrderedDict,否则保留列表顺序,而不保留dict顺序

此外,您在两个列表中定义的元素是字符串(它们在引号中定义),您尝试在y轴上相对于x轴(ind)值进行绘制。您将需要数字数据才能针对ind进行绘制。

大概您想用数值数据定义真正的字典键值对,例如:

genome_dict = {'rRNA': 1, 'IGR': 2, '3UTR': 3, '5UTR': 4, 'tRNA': 6, 'TU': 7, 'sRNA': 8, 'AS': 9, 'cis_AS_with_trans_t': 10, 'mRNA': 11, 'other-ncRNA': 12}

使用它,您可以提取键并将它们用作带有ax.set_xticklabels的图形轴标签。您可以将字典的值用作rects = ax.bar()表达式中的第二个参数,即,作为y轴值,从而生成针对ind的数字数据图,每个条形图均标记为基因组类型。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章