如何在角图中以不同方式格式化中位数和误差?
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)跨度>以上是关于如何在角图中以不同方式格式化中位数和误差?的主要内容,如果未能解决你的问题,请参考以下文章