varias print loop graficas ggplot for change r ggplot2

print - Looping sobre variables en ggplot



print ggplot in a loop r (3)

Dependiendo de lo que estés tratando de hacer, me parece que facet_wrap o facet_grid funcionan bien para crear múltiples gráficos con la misma estructura básica. Algo como esto debería llevarte al estadio correcto:

t.m = melt(t, id="w") ggplot(t.m, aes(w, value)) + facet_wrap(~ variable) + geom_line()

Quiero usar ggplot para recorrer varias columnas para crear múltiples gráficos, pero usar el marcador de posición en el ciclo for cambia el comportamiento de ggplot.

Si tengo esto:

t <- data.frame(w = c(1, 2, 3, 4), x = c(23,45,23, 34), y = c(23,34,54, 23), z = c(23,12,54, 32))

Esto funciona bien:

ggplot(data=t, aes(w, x)) + geom_line()

Pero esto no:

i <- ''x'' ggplot(data=t, aes(w, i)) + geom_line()

Lo cual es un problema si quiero eventualmente pasar por encima de x, y y z. ¿Alguna ayuda?


El problema es cómo accede al marco de datos t . Como probablemente sepa, hay varias formas de hacerlo, pero desafortunadamente usar un personaje obviamente no es uno de ellos en ggplot .

Una forma en que podría funcionar es usar la posición numérica de la columna en su ejemplo, por ejemplo, podría intentar i <- 2 . Sin embargo, si esto funciona se basa en ggplot que nunca he usado (pero conozco otro trabajo de Hadley y supongo que debería funcionar)

Otra forma de eludir esto es creando un nuevo marco de datos temporal cada vez que llame a ggplot. p.ej:

tmp <- data.frame(a = t[[''w'']], b = t[[i]]) ggplot(data=tmp, aes(a, b)) + geom_line()


Solo necesitas usar aes_string lugar de aes , así:

ggplot(data=t, aes_string(x = "w", y = i)) + geom_line()

Tenga en cuenta que w también debe especificarse como una cadena.