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

时间:2012-09-07 12:28:38

标签: r plot ggplot2

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

使用以前的question作为示例数据:

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)

enter image description here

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

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

4 个答案:

答案 0 :(得分:63)

您可以将ggplot2的{​​{1}}与annotation_custom包中的tableGrob一起使用。

gridExtra

enter image description here

答案 1 :(得分:6)

@ user3206440,@ Punintended存在一种删除行号的简便方法:将java -jar jolokia-jvm.jar start catalina添加到rows = NULL的调用中。

tableGrob

Reading in a file from google cloud storage using java

请参阅Plot image

答案 2 :(得分:1)

@ user3206440:我找到了解决行号的解决方法。我将数据格式化为矩阵,分配列名,然后直接调用tableGrob。每当我让tableGrob将其称为数据框时,行名称仍然存在。

以下是一个例子。我确定有更简单的方法来处理chisq.test输出

chivalues <- chisq.test(chitable)
chidf <- matrix(c(unlist(c(round(as.numeric(chivalues[1]), 2),
                    chivalues[2], round(as.numeric(chivalues[3]), 5), numcells))),
                   nrow = 1, ncol = 4, byrow = FALSE)
colnames(chidf) <- c("Chi-Squared", "DF", "P Value", "Total Cells")

然后......

annotation_custom(tableGrob(chidf), xmin=2, xmax=6, ymin=700, ymax=800)

答案 3 :(得分:1)

随着'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)

'ggplot2'3.0.0完全支持微调(请参见release announcement),从而可以将数据帧列表映射到label的美感。软件包“ ggpmisc 0.3.0”中新的geom_table()利用了这一优势,从而可以添加语法类似于geom_label()的表(请参见documentation)。这里似乎最适合将表格添加为 注释,但是当然geom_table()也可以像其他ggplot几何一样直接使用。

enter image description here