带off的Python格式字符串

2024-06-01 20:43:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个seaborn热图,我使用mpldatacursor在正方形上显示注释,在本例中,是x轴坐标: enter image description here

我通过以下行显示悬停工具提示:

datacursor(hover=True, axes = self.axh, formatter = "Value: {x:.0f}".format)

问题是,我的数据从70开始,热图的x轴索引从0开始,这就是为什么图像中的值是7。我要做的是找到一些方法来“添加”值的偏移量,这样我就能得到正确的值,即77。我尝试了以下方法:

formatter = str(eval(str("{x:.0f}".format) + "70")).format

但它不起作用…我怎么能做到呢?在


Tags: 工具方法selftrueformatformatterseaborn热图
2条回答

这应该是有效的:

formatter = lambda **d: "Value: {:.0f}".format(d["x"] + 70)

所以之前的问题是我不明白应该为formatter参数提供什么。示例代码之所以显示format的错误用法,是因为格式化程序实际上使用字典参数调用函数(在本例中是方法)。所以就变成这样:

^{pr2}$

将参数添加到其中。但是要修改字典的内容,您需要使用一个lambda,它接受dict,然后通过必要的修改将其解包。我们用键"x"取这个值,然后加上70。
d之前的那些星将根据给定的关键字参数组成字典。因此,当函数f(**d)被这样调用时:f(a=1, b=2, c=3)将有一个字典d,其中{}对来自参数:{"a":1, "b":2, "c":3}。这允许函数接受任何数量的参数,并将它们都很好地存储在字典中供您使用。在

看起来你调用格式不正确。您需要指定要格式化的内容。下面是一个例子:

val = 7
out = '{:0f}'.format(val)

结果是:

^{pr2}$

如果你想用它来增加70,你可以试试这个:

val = 7
out = str(float('{:0f}'.format(val)) + 70) 

结果是:

'77.0'

最后,将其转换为lambda函数:

formatter = lambda x: str(float('{:0f}'.format(x)) + 70)
formatter(7)
>> '77.0'

希望这就是你想要的。在

相关问题 更多 >