如何在pyplot注释中设置有效数字

时间:2015-07-23 00:16:09

标签: python numpy matplotlib

K-S测试的P值和D值需要显示在pylot直方图上。值得庆幸的是,我的p值很低,但是当我使用0.0时它们显示为round。我还尝试numpy.set_printoptions(precision=3)将有效数字限制为数千位,但这只会将我的输出打印更改为解释器,而不是图形。

 ks_D, ks_p = ks_2samp(cntrl, test)

 ks_summ = "K-S D-value = {}\nK-S p-value = {}".format(round(ks_D, 3), round(ks_p, 3))
pyplot.annotate(ks_summ, xy=(0.70, 0.75), xycoords='axes fraction')

那么如何在图表注释中将1.2228387401e-24<class 'numpy.float64'>)显示为1.223e-24

这是我的图表,p值显示为0.0: enter image description here

1 个答案:

答案 0 :(得分:1)

您需要修改

ks_summ = "K-S D-value = {}\nK-S p-value = {}".format(round(ks_D, 3), round(ks_p, 3))

阅读

ks_summ = "K-S D-value = {}\nK-S p-value = {:.3e}".format(round(ks_D, 3), ks_p)

{:.3e}格式表示带指数表示法的3位小数。由于此格式表示法中包含的舍入到3个小数位,我们可以将代码放到ks_p轮。例如:

>>> ks_p = 1.2228387401e-24
>>> '{:.3e}'.format(ks_p)
'1.223e-24'

最后,请注意您也可以将字符串格式应用于ks_D。某事{:.3f}可以解决问题(即三位小数舍入)。

>>> ks_D = 0.38210101
>>> '{:.3f}'.format(ks_D)
'0.382'