r - 使用 ggplot2 和 tablegrob 绘制分组箱线图,其中包含来自多个具有 NA 值的矩阵的汇总统计数据

标签 r ggplot2 gridextra

我已经搜索了一段时间,但我仍然无法解决这个小问题,我想更改 tablegrob() 创建的表格中数字的小数位。这样做会使整个 View 看起来更好,如下所示

:

enter image description here

这是代码:

a<-as.vector(matrixA) #matrices A-D contain randomly generated NA and 
b<-as.vector(matrixB) #numerical values
c<-as.vector(matrixC)
d<-as.vector(matrixD)
data <- cbind(a, b, c, d)
plot <- melt(data)
colnames(plot)[2]<-"variable"
plot<-plot[,-1]
levels(df$variable) <- c("A", "B", "C",
                                  "D")
xlabs <- paste(levels(plot$variable),"\n(N=",
               colSums(!is.na(data)),")",sep="")
boxplot1<-ggplot(na.omit(plot),aes(x=variable,y=value,color=variable))+
  geom_boxplot()+scale_x_discrete(labels=xlabs)+
  xlab("X") + ylab("Y")+ 
  ggtitle("Title")
#create inset table
multi.fun <- function(x) {
  c(Mean = mean(x,na.rm=TRUE), Median = median(x,na.rm=TRUE), 
    IQR = IQR(x,na.rm=TRUE))}
sum.table<-data.frame(lapply(data.frame(a,b,c,d), multi.fun))
colnames(sum.table)<- c("A", "B", "C",
                        "D")
my_table <- tableGrob(sum.table, **digits=2**, gpar.coretext = gpar(fontsize=8), 
                      gpar.coltext=gpar(fontsize=8), gpar.rowtext=gpar(fontsize=8))
#Create the viewports, push them, draw and go up
grid.newpage()
vp1 <- viewport(width = 0.75, height = 1, x = 0.375, y = .5)
subvp <- viewport(width = 0.3, height = 0.3, x = 0.75, y = 0.20)
print(boxplot1, vp = vp1)
upViewport(0)
pushViewport(subvp)
grid.draw(my_table)

我尝试在 tablegrob 中使用 digits 调整值,但没有用。我还尝试了 options(digits=2),但也没有用。有什么想法或想法吗?

最佳答案

colnames(sum.table)<- c("A", "B", "C","D")
***sum.table<-format(sum.table[1:3,1:4], digits=2)***
my_table <- tableGrob(sum.table, 
            gpar.coretext = gpar(fontsize=8), gpar.coltext=gpar(fontsize=8), 
            gpar.rowtext=gpar(fontsize=8))

在使用 tableGrob 之前格式化 data.frame sum.table<-format(sum.table[1:3,1:4], digits=2) ,我得到了想要的结果:

enter image description here

关于r - 使用 ggplot2 和 tablegrob 绘制分组箱线图,其中包含来自多个具有 NA 值的矩阵的汇总统计数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28690592/

相关文章:

r - 从/dev/random生成随机整数

r - (Rcpp, Armadillo ) 将 arma::vec 转换为 arma::mat

r - 构建具有重叠观察结果的数据框

r - ggplot中的控制点边框厚度

r - 带 R 的多彩标题

r - ggplot : align multiple faceted plots - facets all different sizes

r - 在 R 中使用 causalweight 包

r - 如何防止小数位数::百分比加小数

r - 使用 facet_grid 有条件地更改面板背景?

r - 如何完美对齐数量不等的图 (ggplot2,gridExtra)