晶格R中的levelplot:如何在单元格中显示正确的小数位数

时间:2018-01-23 15:51:32

标签: r lattice levelplot

在格子中使用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,而我希望所有数字都有两位小数。任何解决这个问题的想法都会受到欢迎。

1 个答案:

答案 0 :(得分:1)

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强制输出为小数点后两位。