如何在角图中以不同方式格式化中位数和误差?

Posted

技术标签:

【中文标题】如何在角图中以不同方式格式化中位数和误差?【英文标题】:How to format median and errors differently in corner plots? 【发布时间】:2021-01-30 20:20:28 【问题描述】:

我正在尝试使用 Python 中的 corner 包来格式化角图。据我所知,有命令title_fmt = *arg,但是它为中值和误差提供了相同的格式,这对于报告测量误差是不方便的。我需要用 2 个有效数字显示错误,然后在最后一个 sig.fig 处舍入中位数。其错误。这是我可以做的一个例子

import numpy as np
from matplotlib import pyplot as plt
import corner

np.random.seed(539)

#   generate data
data = np.random.randn(5000,3)
data[:,0] = data[:,0]*20 + 150.75
data[:,1] = data[:,1] + 7.52
data[:,2] = data[:,2]*5 + 31.25

#   make plot
labels = ['x','y','f']
fig=plt.figure(figsize=(7,7),dpi=100)
fig=corner.corner(
    data, labels=labels, quantiles=(0.16, 0.84),show_titles=True,
    title_fmt='g', use_math_text=True, fig=fig)
fig.show()

给了

我可以输入像title_fmt = '.2g' 这样的行

如预期的那样显示较少的 sig.fig。对于错误,但后来我错过了 sig.fig。在中位数和一些错误不显示最后一个 sig.fig。当它为 0 时。对于我的示例,我需要得到类似的东西

x = 151 +20
        -19
y = 7.5 +1.0
        -1.0
f = 31.3 +5.2
         -5.0

我已经阅读了 API,除了 title_fmt 选项之外,它没有提供任何更多解释。如果有人可以提供帮助,请提前致谢。

【问题讨论】:

【参考方案1】:

title_fmt = '.2f' 应该格式化带有 2 位小数的数字。 在这里,您有所有可能的格式选项: https://docs.python.org/3/reference/lexical_analysis.html#f-strings

【讨论】:

您好,感谢您的回复。您的建议使所有数字显示小数点后 2 位,而我需要的是显示 2 significant figures 用于错误,以及中位数中足够的有效数字,直到错误的最后一个数字,如下所示句子 ' For my例如我需要...' 您可以在格式化之前对错误进行四舍五入:significant_digits = 2 rounded_number = round(number, Significant_digits - int(math.floor(math.log10(abs(number)))) - 1)跨度>

以上是关于如何在角图中以不同方式格式化中位数和误差?的主要内容,如果未能解决你的问题,请参考以下文章

如何在角材料表中获得选定区域?

在 R 中的折线图中添加误差线(ggplot)

如何在角材料中使用 css 更改 md-input-container 占位符颜色?

如何格式化数字以具有相同的位数?

如何在组箱图中绘制标签

带有误差条的散点图