Disculpe por no haber incluido ningún dato de ejemplo para mi problema. No pude encontrar una manera de producir fácilmente un archivo de forma de ejemplo. Afortunadamente, los usuarios con experiencia de ggplot
pueden ver lo que me gustaría hacer de la siguiente descripción.Diferentes leyendas y colores de relleno para ggplot facetado?
Tengo:
Un
data.frame
X con la información sobre parcelas de muestreo (plotid
,var1
,var2
,var3
,var4
, ...)Un archivo de forma poligonal
Y
con la información espacial para los gráficos de muestra
Importación del shapefile Y
(con maptools
) y fortify
ing como data.frame
Z
(ggplot2
) funciona bien. melt
ing X
a X_melted
funciona igual de bien. merge
-ing Z
y X_melted
a mapdf
funciona también.
Eso significa que ahora tenemos un data.frame
en forma de largo con información espacial y var1
, var2
, var3
, ...
Ahora quiero graficar esta trama de datos como esto:
pl1 <- ggplot(mapdf,aes(long,lat),group=group)
pl1 <- pl1 + geom_polygon(aes(group=group,fill=value),colour="black")
pl1 <- pl1 + facet_grid(variable ~ .)
pl1 <- pl1 + coord_equal(ratio = 1)
pl1
El resultado es una buena trama con un panel para cada variable. Los mapas de los paneles son idénticos, pero el color de relleno varía con los valores de las variables. Hasta ahora, todo funciona como un encanto ... con un problema:
Las variables tienen diferentes valores mínimos y máximos. Por ejemplo var1
va 0
-5
, var2
de 0
a 400
, var3
5
-10
, etc. En ese ejemplo, la leyenda para el color de relleno va desde 0
a 400
. var2
está muy bien dibujado, pero var1
y var3
son básicamente del mismo color.
¿Hay alguna manera de que pueda usar una leyenda diferente para cada panel de la faceta? ¿O esto simplemente no (todavía) es posible con facet_wrap
o facet_grid
en ggplot
?
Podría hacer gráficas individuales para cada variable y unirlas con ventanas gráficas, pero hay un montón de variables y esto sería mucho trabajo.
¿O tal vez haya otro paquete o método que podría utilizar para lograr lo que me gustaría hacer?
Y la ayuda sería muy apreciada.:)
Editar: Con la ayuda de la descripción ggplot2
-El paquete, que construye un ejemplo que ilustra mi problema:
ids <- factor(c("1.1", "2.1", "1.2", "2.2", "1.3", "2.3"))
values <- data.frame(
id = ids,
val1 = cumsum(runif(6, max = 0.5)),
val2 = cumsum(runif(6, max = 50))
)
positions <- data.frame(
id = rep(ids, each = 4),
x = c(2, 1, 1.1, 2.2, 1, 0, 0.3, 1.1, 2.2, 1.1, 1.2, 2.5, 1.1, 0.3,
0.5, 1.2, 2.5, 1.2, 1.3, 2.7, 1.2, 0.5, 0.6, 1.3),
y = c(-0.5, 0, 1, 0.5, 0, 0.5, 1.5, 1, 0.5, 1, 2.1, 1.7, 1, 1.5,
2.2, 2.1, 1.7, 2.1, 3.2, 2.8, 2.1, 2.2, 3.3, 3.2)
)
values <- melt(values)
datapoly <- merge(values, positions, by=c("id"))
p <- ggplot(datapoly, aes(x=x, y=y)) + geom_polygon(aes(fill=value, group=id),colour="black")
p <- p + facet_wrap(~ variable)
p
El panel de la derecha ilustra diferentes valores para var2
en el mapa. Sin embargo, en el panel de la izquierda, todos los polígonos tienen el mismo color. Esto es lógico, porque solo se usa un degradado de color para todos los paneles. ¿Podría usar un degradado de color diferente para cada panel?
Ok, gracias por la respuesta. ¿Esta característica se implementará pronto? ;) – donodarazao
Es extremadamente improbable, porque es fácil trabajar dibujando trazados separados. – hadley