Ich möchte eine Tabelle mit den Koordinaten der hervorgehobenen Site in einem ggplot hinzufügen.
Verwenden Sie eine vorherige Frage als Beispieldaten:
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)
Ich möchte die folgende Tabelle in der rechten unteren Ecke des Diagramms innerhalb des Diagrammbereichs hinzufügen. Irgendein Rat?
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
Sie können ggplot2
s annotation_custom
mit einer tableGrob
aus dem gridExtra
-Paket verwenden.
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)
@ user3206440, @Punintended Es gibt eine einfache Möglichkeit, Zeilennummern zu entfernen: Fügen Sie rows = NULL
zum Aufruf von tableGrob
hinzu.
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)
Siehe das gridExtra Wiki .
Mit der Veröffentlichung von 'ggplot2' 3.0.0 und 'ggpmisc' 0.3.0 ist eine neue einfachere Antwort möglich:
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 unterstützt vollständig tibbles (siehe release announcement ), wodurch es möglich ist, eine Liste von Datenrahmen der label
-Ästhetik zuzuordnen. Das neue geom_table()
im Paket 'ggpmisc 0.3.0' macht sich das zu Nutze und ermöglicht das Hinzufügen von Tabellen mit einer ähnlichen Syntax wie geom_label()
(siehe documentation ). Hier schien es am besten, die Tabelle als -Anmerkung hinzuzufügen, aber geom_table()
kann natürlich auch direkt als andere ggplot
-Geometrien verwendet werden.
@ user3206440: Ich habe eine Problemumgehung gefunden, die Zeilennummern entfernt. Ich habe meine Daten als Matrix formatiert, Spaltennamen zugewiesen und dann von tableGrob direkt aufgerufen. Immer wenn ich tableGrob als Datenrahmen bezeichnen ließ, blieb der Zeilenname bestehen.
Unten ist ein Beispiel. Ich bin sicher, es gibt einen einfacheren Weg, mit der Ausgabe von chisq.test umzugehen
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")
Und dann später ...
annotation_custom(tableGrob(chidf), xmin=2, xmax=6, ymin=700, ymax=800)