Dodawanie tabeli w obszarze wykresu ggplot w r
Chciałbym dodać tabelę współrzędnych zaznaczonej strony w ggplot.
Użycie poprzedniego pytania jako przykładowe dane:
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)
Chciałbym dodać poniższą tabelę w prawym dolnym rogu wykresu w obszarze wykresu. Jakieś rady?
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 answers
Możesz użyć ggplot2
's annotation_custom
z tableGrob
z pakietu 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)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-07 12:57:07
@ user3206440, @ Punintended łatwy sposób usuwania numerów wierszy istnieje: dodaj rows = NULL
do wywołania do 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)
Zobacz Gridextra Wiki .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-22 20:21:00
@user3206440: znalazłem pracę, która usuwa numery wierszy. Sformatowałem moje dane jako macierz, przypisałem nazwy kolumn, a następnie wywołałem tableGrob bezpośrednio. Ilekroć miałem tableGrob nazwać to jako ramkę danych, nazwa wiersza utrzymywała się.
Poniżej znajduje się przykład. Jestem pewien, że jest łatwiejszy sposób, aby poradzić sobie z chisq.wyjście testowe
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")
I Później...
annotation_custom(tableGrob(chidf), xmin=2, xmax=6, ymin=700, ymax=800)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-06 19:48:36
Wraz z wydaniem 'ggplot2' 3.0.0 i 'ggpmisc' 0.3.0 możliwa jest nowa prostsza odpowiedź:
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 w pełni obsługuje tibbles (zobacz release announcement), dzięki czemu możliwe jest odwzorowanie listy ramek danych na estetykę label
. Nowa geom_table()
w pakiecie 'ggpmisc 0.3.0' wykorzystuje to, umożliwiając dodawanie tabel o składni podobnej do składni geom_label()
(Zobacz dokumentacja ). Tutaj najlepiej dodać stół jako
adnotacja, ale oczywiście geom_table()
może być również używana bezpośrednio, jak inne ggplot
geometrie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-25 09:31:43