我想在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
您可以使用ggplot2的 annotation_custom有tableGrob来自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)

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几何图形。
@ 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.