2014-10-30 1 views
1

Я создал facet_grid с тремя графиками, однако, я хочу, чтобы на одном из графиков был другой заголовок оси y.поместите два разных названия оси y на facet_grid

Вот мои данные:

df <- structure(list(year = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 
8L, 9L, 10L, 11L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 
1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L), .Label = c("2000", 
"2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", 
"2009", "2010"), class = "factor"), variable = structure(c(2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L 
), .Label = c("seasonlengths_mean", "largeintegrals_mean", "amplitudes_mean" 
), class = "factor"), value = c(1850.944464, 2027.706638, 1574.997154, 
1734.959513, 1722.652719, 1723.666096, 1621.52355, 1874.67606, 
1558.877827, 1588.589131, 1731.504726, 3150.864739, 3246.418993, 
3021.413284, 3422.282686, 3307.734952, 3320.185729, 3505.83784, 
3254.344441, 3288.9163, 3454.903224, 3183.981956, 212.84742, 
243.530836, 243.530836, 201.9268598, 208.061906, 208.0701673, 
197.0074404, 224.4825376, 170.9265051, 176.7918446, 198.7339252 
)), row.names = c(NA, -33L), .Names = c("year", "variable", "value" 
), class = "data.frame") 

Тогда я сделать мой график ...

library (ggplot2) 
library (scales) 

p <- ggplot (data=df, aes(x=year,y=value,group=variable)) + geom_line() + facet_grid(variable~.,scales='free') 
p 

Производит этот граф ...

enter image description here

Вместо того, чтобы просто один ярлык заголовка оси y, «значения», я хочу два заголовка ... один для верхнего графика и на e для нижних двух графиков.

Благодаря

-cherrytree

+2

не думаю, что вы можете сделать это в одном 'facet_grid'. Возможно, два графика, удалить оси сверху, а затем 'grid.arrange' –

ответ

2

Что касается направления, как высказал мнение в комментариях выше, вы могли бы сделать что-то похожее на это.

library(ggplot2) 
library(scales) 
library(dplyr) 
p1 <- ggplot (data <- df %>% filter(variable %in% c("seasonlengths_mean")), 
       aes(x=year,y=value,group=variable)) + 
    geom_line() + 
    facet_grid(variable~.,scales='free') + 
    labs(y="value_label_1") + 
    theme(axis.title.x=element_blank()) 

p2 <- ggplot (data <- df %>% 
       filter(variable %in% c("largeintegrals_mean", "amplitudes_mean")), 
       aes(x=year,y=value,group=variable)) + 
    geom_line() + 
    facet_grid(variable~.,scales='free') + 
    labs(y="value_label_2") 

# http://stackoverflow.com/questions/13294952/left-align-two-graph-edges-ggplot 
gA <- ggplotGrob(p1) 
gB <- ggplotGrob(p2) 
maxWidth = grid::unit.pmax(gA$widths[2:5], gB$widths[2:5]) 
gA$widths[2:5] <- as.list(maxWidth) 
gB$widths[2:5] <- as.list(maxWidth) 

p3 <- arrangeGrob(
    gA, gB, nrow = 2, heights = c(0.35, 0.65), 
    main = textGrob(
    "Title of the Graph", 
    just = "top", vjust = 0.75, gp = gpar(fontsize = 14, lineheight = 1, 
              fontface = "bold"))) 
p3 

enter image description here

Смежные вопросы