Бок о бок графики с ggplot2

Существует интересный поток на Лямбда Окончательное , который обсуждает LALR-грамматика для C++ .

Это включает ссылку на диссертация , который включает обсуждение парсинга C++, который указывает что:

"грамматика C++ неоднозначна, контекстно-зависима и потенциально требует, чтобы бесконечное предвидение разрешило некоторые неоднозначности".

Это продолжает давать много примеров (см. страницу 147 PDF).

пример:

int(x), y, *const z;

значение

int x;
int y;
int *const z;

Выдерживают сравнение с:

int(x), y, new int;

значение

(int(x)), (y), (new int));

(разделенное от запятой выражение).

две маркерных последовательности имеют ту же начальную подпоследовательность, но различные деревья синтаксического анализа, которые зависят от последнего элемента. Перед снимающим неоднозначность может быть произвольно много маркеров.

313
задан jazzurro 21 December 2016 в 19:41
поделиться

3 ответа

Да, мне кажется, вам нужно правильно организовать свои данные. Один из способов был бы следующим:

X <- data.frame(x=rep(x,2),
                y=c(3*x+eps, 2*x+eps),
                case=rep(c("first","second"), each=100))

qplot(x, y, data=X, facets = . ~ case) + geom_smooth()

Я уверен, что есть лучшие приемы в plyr или reshape - я все еще не совсем в курсе на всех этих мощных пакетах Хэдли.

17
ответ дан 23 November 2019 в 01:08
поделиться

Используя пакет reshape, вы можете сделать что-то вроде этого .

library(ggplot2)
wide <- data.frame(x = rnorm(100), eps = rnorm(100, 0, .2))
wide$first <- with(wide, 3 * x + eps)
wide$second <- with(wide, 2 * x + eps)
long <- melt(wide, id.vars = c("x", "eps"))
ggplot(long, aes(x = x, y = value)) + geom_smooth() + geom_point() + facet_grid(.~ variable)
15
ответ дан 23 November 2019 в 01:08
поделиться

Обновление: Этот ответ очень старый. gridExtra :: grid.arrange () - теперь рекомендуемый подход. Я оставляю его здесь на случай, если он может быть полезен.


Стивен Тернер разместил функцию организовать () в блоге Getting Genetics Done (инструкции по применению см. В сообщении)

vp.layout <- function(x, y) viewport(layout.pos.row=x, layout.pos.col=y)
arrange <- function(..., nrow=NULL, ncol=NULL, as.table=FALSE) {
 dots <- list(...)
 n <- length(dots)
 if(is.null(nrow) & is.null(ncol)) { nrow = floor(n/2) ; ncol = ceiling(n/nrow)}
 if(is.null(nrow)) { nrow = ceiling(n/ncol)}
 if(is.null(ncol)) { ncol = ceiling(n/nrow)}
        ## NOTE see n2mfrow in grDevices for possible alternative
grid.newpage()
pushViewport(viewport(layout=grid.layout(nrow,ncol) ) )
 ii.p <- 1
 for(ii.row in seq(1, nrow)){
 ii.table.row <- ii.row 
 if(as.table) {ii.table.row <- nrow - ii.table.row + 1}
  for(ii.col in seq(1, ncol)){
   ii.table <- ii.p
   if(ii.p > n) break
   print(dots[[ii.table]], vp=vp.layout(ii.table.row, ii.col))
   ii.p <- ii.p + 1
  }
 }
}
10
ответ дан 23 November 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: