python matplotlib barh的奇怪操作

 上图展示了不同食物中蛋白质含量的柱状体,原本应该是降序的,但是中间窜出来一个奇怪的“豆粕”,于是我检查code:

    plt.barh(y=foodLabel_n, width=nutInt_n, color='orange')
    plt.title('%s content of each food' % nut.split('_')[0],
            fontsize=18, fontweight='bold', fontstyle='italic')
    plt.xlabel('含量 / %s' % nut.split('_')[1].lower())
    plt.ylabel('食品')
    plt.show()

但是排序调用的是python的sorted,应该不会出错啊,打印数据一看发现,原来是数据本身的问题

[880, 841, 1247, 1000, 865, 866, 871, 1393, 1388, 1048, 1197, 979, 1493, 965, 838, 951, 847, 801, 1194, 981, 1196, 628, 972, 869, 945, 836, 946, 2, 1328, 840]
['豆粕', '大豆(干烤)', '鸡蛋粉(全蛋粉)', '海米(虾米)', '枝竹', '腐竹', '豆腐皮', '牛肉干', '咖喱牛肉干', '鱼片干', '奶豆腐(鲜)', '蛏干', '酵母(干 
)', '贻贝(干)', '豆粕', '海参(干)', '大豆粉(脱脂)', '豆腐(干冻)', '奶豆腐(脱脂)', '鲍鱼(干)', '奶疙瘩(奶酪干)', '大豆蛋白粉', '扇贝(干)', 
'豆腐丝(干)', '鱿鱼', '大豆浓缩蛋白', '墨鱼(干)', '白鲸(肉,干)', '驼掌(骆驼掌)', '大豆分离蛋白']
[42.5, 43.32, 43.4, 43.7, 44.4, 44.6, 44.6, 45.6, 45.9, 46.1, 46.2, 46.5, 47.6, 47.8, 49.2, 50.2, 51.46, 52.47, 53.7, 54.1, 55.1, 55.56, 55.6, 57.7, 60.0, 
63.63, 65.3, 69.86, 72.8, 88.32]

有两个名字一模一样的“豆粕”,但是原始数据中他们两个的营养含量不同,龟龟,怎么会搞成这样?其他妈的怪了。。。经过一番检查与百度,我发现了matplotlib的barh本身是有点问题的。。。至少对于有重复key的数据而言是有问题的。。。于是我用简单数据测试了一下:

y = ['a','b','c','d','a','e','f','g']
width = [1,4,6,8,5,10,12,14]
plt.barh(y=y, width=width, color='orange')
plt.show()

结果和我猜想一样,当存在相同y值的数据是,barh只打印width最大的那一项

这就没办法了,我只能清洗数据再来一次吧。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值