python怎么使用int四舍五入_使用Python 3的数字格式可以将数字四舍五入到成百上千个...

作者探讨如何在Seaborn热图中实现单元格数字的四舍五入到最近的百位,以提升图表易读性。尽管Matplotlib的text方法提供了四舍五入功能,但问题在于如何在保持原始数据不变的前提下操作。文章可能涉及对Seaborn源码的理解和可能的numpy数组自定义格式化解决方案。
摘要由CSDN通过智能技术生成

具体问题

我正在尝试在seaborn热图中的单元格顶部打印数字.例如,类似:

ax = sns.heatmap(flights, annot=True, fmt=",")

(这直接取自seaborn‘s documentation,将其调整为对Python 3友好.因此,如果您导入seaborn,则可以直接使用相同的示例.)

这样会生成一个相当受人尊敬的数字,如下所示:

3muWk.png

但是,我希望看到数字四舍五入到最接近的几百位.换句话说,我希望看到数字171表示为200,315表示为300,依此类推.

主意

在引擎盖下,seaborn实际上只是matplotlib.我可以使用matplotlib的text methods.

matplotlib的文本依赖于Python 3的text formatting,它通过将.2进行四舍五入到第***位***,而具有方便的方法来四舍五入到小数点右边,但是我找不到其他的要四舍五入的东西.方向.

我可以在将数字推送到绘图之前简单地四舍五入,但这实际上会更改绘图数据本身,我宁愿避免.因此,我希望保留传递给绘图的基础数字不变,同时仍然能够很好地打印内容.

据我所知,做到这一点的唯一方法是找到一种格式化事情的聪明方法.有办法吗?

谢谢!

更新资料

我进一步研究了seaborn‘s code,试图理解为什么La Rooy下面的巧妙解决方案对我不起作用.

seaborn代码中的相关行是:

val = ("{:" + self.fmt + "}").format(val)

但是,要使其正常工作,我将需要能够更改我的pandas数据框列,这意味着我需要能够调整nd.array元素的列.

因此,我暂时不再讨论这个问题,并希望一旦事情解决了,我将能够采用La Rooy的解决方案,并且事情应该可以进行.

一旦发生这种情况,解决方案将是:

>>> class rndarray(np.ndarray):

... def __format__(self, spec):

... return np.ndarray.__format__(int(round(self, -2)), spec)

...

>>> df[''] = map(rndarray, df['

或者,如果那不起作用,则:

>>> df[''].values = map(rndarray, df['

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值