格子 R 中的 levelplot:如何获得单元格中显示的正确小数位数

levelplot in lattice R: How to get right number of decimals displayed in cells

在 lattice 中使用 levelplot,我想出了如何显示每个单元格的相应值。对于矩阵 m:

myPanel <- function(x,y,z, ...){
 panel.levelplot(x,y,z,...) 
 panel.text(x,y, round(m,2),col=bw[col.m])
}
levelplot(m, col.regions=col.range, colorkey=NULL, xlab=NULL, ylab=NULL,
      scales = list(x = list(draw = FALSE),  y = list(draw = FALSE)),
      panel= myPanel)

四舍五入的矩阵值为

round(m,2)
     13    14    15    16    17    18
GDcsp -0.44 -0.34 -0.39 -0.35 -0.53 -0.60
GDsor  0.14  0.07  0.03  0.01  0.06  0.09
GDdup  0.43  0.36  0.34  0.36  0.46  0.52
GDhsw  0.22  0.05  0.11  0.00  0.20  0.26
Gdwpa  0.17  0.25  0.32  0.37  0.46  0.47

问题是 -0.60 和 0.00 在相应的单元格中分别显示为 0.6 和 0,而我希望所有数字都保留两位小数。欢迎任何解决此问题的想法。

myPanel <- function(x,y,z, ...){
  panel.levelplot(x,y,z,...) 
  panel.text(x,y, sprintf("%.2f", m))
}
levelplot(m, colorkey=NULL, xlab=NULL, ylab=NULL,
          scales = list(x = list(draw = FALSE),  y = list(draw = FALSE)),
          panel= myPanel)

您可以使用sprintf强制输出2位小数。