在r中的ggplot的绘图区域内添加表格

Eli*_*eth 43 plot r ggplot2

我想在ggplot中添加一个突出显示的站点坐标表.

使用上一个问题作为示例数据:

set.seed(1)
mydata <- data.frame(a=1:50, b=rnorm(50))
ggplot(mydata,aes(x=a,y=b)) + 
    geom_point(colour="blue") + 
    geom_point(data=mydata[10:13, ], aes(x=a, y=b), colour="red", size=5)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我想将下表添加到绘图区域内绘图的右下角.有什么建议?

table<-cbind(sites=c("site 1","site 2","site 3","site 4"),mydata[10:13,])
table

    sites  a          b
    site 1 10 -0.3053884
    site 2 11  1.5117812
    site 3 12  0.3898432
    site 4 13 -0.6212406
Run Code Online (Sandbox Code Playgroud)

Mat*_*rde 67

您可以使用ggplot2annotation_customtableGrob来自gridExtra包.

library(ggplot2)
library(gridExtra)
set.seed(1)
mydata <- data.frame(a=1:50, b=rnorm(50))
mytable <- cbind(sites=c("site 1","site 2","site 3","site 4"),mydata[10:13,])
k <- ggplot(mydata,aes(x=a,y=b)) + 
  geom_point(colour="blue") + 
  geom_point(data=mydata[10:13, ], aes(x=a, y=b), colour="red", size=5) + 
  annotation_custom(tableGrob(mytable), xmin=35, xmax=50, ymin=-2.5, ymax=-1)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 对于美学的控制在最后一个版本中发生了变化,请参阅[插图](https://github.com/baptiste/gridextra/wiki/tableGrob)了解各种新选项. (5认同)
  • 是否可以在显示时删除行号? (2认同)

Ped*_*alo 20

随着'ggplot2' 3.0.0 和'ggpmisc' 0.3.0的发布,一个新的更简单的答案成为可能:

library(ggplot2)
library(ggpmisc)

set.seed(1)
mydata <- data.frame(a = 1:50, b = rnorm(50))
table <- cbind(sites=c("site 1", "site 2", "site 3", "site 4"), mydata[10:13, ])

ggplot(mydata, aes(x = a, y = b)) + 
  geom_point(colour = "blue") + 
  geom_point(data = mydata[10:13, ], aes(x = a, y = b), colour = "red", size = 5) +
  annotate(geom = "table", x = 37, y = -0.8, label = list(table), 
           vjust = 1, hjust = 0)
Run Code Online (Sandbox Code Playgroud)

'ggplot2' 3.0.0 完全支持 tibbles(请参阅发布公告),从而可以将数据框列表映射到label美学。新geom_table()的 'ggpmisc 0.3.0' 包利用了这一点,添加了语法类似于geom_label()可能的表(参见文档)。这里似乎最适合添加表格作为注释,但当然geom_table()也可以直接使用,作为其他ggplot几何图形。

在此处输入图片说明


Ped*_*alo 7

@ user3206440,@ Bulletin存在一种删除行号的简单方法:添加rows = NULL到调用中tableGrob.

library(ggplot2)
library(gridExtra)
set.seed(1)
mydata <- data.frame(a=1:50, b=rnorm(50))
mytable <- 
   cbind(sites=c("site 1","site 2","site 3","site 4"), mydata[10:13,])
k <- ggplot(mydata,aes(x=a,y=b)) + 
  geom_point(colour="blue") + 
  geom_point(data=mydata[10:13, ], aes(x=a, y=b), colour="red", size=5) + 
  annotation_custom(tableGrob(mytable, rows=NULL), 
                    xmin=35, xmax=50, ymin=-2.5, ymax=-1)
Run Code Online (Sandbox Code Playgroud)

绘制图像

请参阅gridExtra Wiki.