desmontando um ggplot com grid e gtable

Estou lutando para construir um gráfico de eixo duplo baseado emggplot objetos. Por sugestão de baptiste, eu dividi o problema em partes menores. A presente questão é:

como remover todos os dados dogrobs, mantendo o eixo, os rótulos do eixo, as marcas de seleção do eixo e as linhas de grade? Por "dados", quero dizer os dados associados ageom_line() egeom_points().

A razão para querer fazer isso é que, no processo de construção de um gráfico de eixo duplo, deparei-me com o seguinte problema: as linhas de grade de um grob sobrescreviam os dados do outro. Ao remover as linhas e pontos de dados, não haveria substituição.

Deixe-me esclarecer: eu tenho soluções alternativas que consistem em adicionar um tipo de linha aos aes () e definir scale_linetype_manual (values = c ("solid", "blank") ou, alternativamente, enviar os dados 'fora da grade', mas Gostaria de pós-processar um objeto de plotagem que não tenha sido "preparado" demais para o objetivo em questão.

Abaixo alguns códigos e figuras.

# Data
df <- structure(list(Year = c(1950, 2013, 1950, 2013), Country = structure(c(1L, 
1L, 2L, 2L), .Label = c("France", "United States"), class = "factor"), 
Category = c("Hourly minimum wage", "Hourly minimum wage", 
"Hourly minimum wage", "Hourly minimum wage"), value = c(2.14, 
9.43, 3.84, 7.25), variable = c("France (2013 euros)", 
"France (2013 euros)", "United States (2013 dollars)", "United States (2013 dollars)"
), Unit = c("2013 euros", "2013 euros", "2013 dollars", "2013 dollars"
)), .Names = c("Year", "Country", "Category", "value", "variable", 
"Unit"), row.names = c(NA, 4L), class = "data.frame")

# Plot data with ggplot
library(ggplot2)
p <- ggplot(data = df, aes(x = Year, y = value, group = variable, colour = variable, shape = variable)) + 
geom_line(size = 2) + 
geom_point(size = 4) +
theme(panel.grid.major = element_line(size = 1, colour = "darkgreen"), 
      panel.grid.minor = element_line(size = 1, colour = "darkgreen", linetype = "dotted"))

# Manipulate grobs with gtable
library(gtable)
g <- ggplot_gtable(ggplot_build(p))
## Here remove the geom_line() and geom_point()
## g <- stripdata(g)  # pseudo-code!
grid.newpage()
grid.draw(g)

Na trama abaixo, eu gostaria que as linhas sumissem!

Editar: Seguindo a sugestão de baptiste, tento remover as camadas de dados. No entanto, como BondedDust aponta na seção de comentários, isso quebra o objeto ggplot:

# Remove the two layers of data
p$layers[[1]] <- NULL
p$layers[[1]] <- NULL
g <- ggplot_gtable(ggplot_build(p))
## Error: No layers in plot

A remoção dos dados do objeto ggplot os destrói. Uma solução alternativa que usei nos aplicativos é 'enviar os dados da grade', por exemplo. multiplicando cada célula por -999999 e cortando a tela com+ scale_y_continuous(limits = c(1, 10)), mas eu gostaria de evitar esse truque feio, se possível. Eu esperava que o gtable associado não fosse destruído se eu substituísse todos os pontos de dados por NA ou NULL, por isso estava procurando uma maneira de remover os dados de dentro do objeto g, em vez do objeto p.

Após a manipulação dos grobs (em vez de invadir diretamente o objeto ggplot), o resultado degrid.draw(g) seria:

Para sua informação, o segundo gráfico foi obtido com a seguinte solução alternativa.

p <- ggplot(data = within(df, value <- -999999), aes(x = Year, y = value, group = variable, colour = variable, shape = variable)) + 
geom_line() + 
geom_point() +
theme(panel.grid.major = element_line(size = 1, colour = "darkgreen"), 
      panel.grid.minor = element_line(size = 1, colour = "darkgreen", linetype = "dotted")) +
scale_y_continuous(limits = c(1, 10))

questionAnswers(1)

yourAnswerToTheQuestion