2016-02-03 2 views
0

Я хотел бы указать разрывы и цвета для двух фасок независимо. Есть ли способ сделать это?Указание различных меток осей между гранатами

Используя этот код

ggplot(data, aes(x = x, y = y)) + 
    geom_point() + 
    scale_y_continuous(breaks = c(0:3, 4, 6, 8)) + 
    facet_wrap(~group, scales = "free") 

я могу получить добавить дополнительные перерывы, мне нужно на нижней грани, но я не хочу их к вершине. Другими словами, я хотел бы иметь 0, 1, 2, 3 для нижнего участка и 0, 2, 4, 6, 8 для верхнего участка.

Я не знаю, как указать разные цвета для меток между гранями (дайте мне знать, если я должен открыть отдельный вопрос о цветах).

facets

ответ

2

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

library(gridExtra) 

p1 = ggplot(data[data$group=="Group1",], aes(x = x, y = y)) + 
     geom_point() + 
     scale_y_continuous(breaks = c(0:3, 4, 6, 8)) + 
     facet_wrap(~ group) 

p2 = ggplot(data[data$group=="Group2",], aes(x = x, y = y)) + 
     geom_point() + 
     scale_y_continuous(breaks = c(-1:3)) + 
     facet_wrap(~ group) 

grid.arrange(p1, p2, ncol=1) 

Если вы можете придумать правило для программно решить Y-брейки , то вы можете делать все графики сразу, используя lapply. Вот простой пример. Для вашего случая использования вам нужно посмотреть, можете ли вы найти правило или правила, которые работают для всех графиков.

# Store all the plots in a list 
pl = list() 

pl = lapply(unique(data$group), function(i) { 
    ggplot(data[data$group==i,], aes(x,y)) + 
    geom_point() + 
    facet_wrap(~ group) + 
    scale_y_continuous(limits=c(min(data$y[data$group==i]), max(data$y[data$group==i])), breaks=min(data$y):max(data$y)) 
}) 

do.call(grid.arrange, c(pl, ncol=1)) 
Смежные вопросы