Извините, что не включены никакие примеры данных для моей проблемы. Я не мог найти способ легко создать пример файла формы. Надеемся, опытные пользователи ggplot могут видеть, что Id нравится делать из приведенного ниже описания.
Я получил:
-
A
data.frameX с информацией о выборках (plotid,var1,var2,var3,var4,...) -
Файл формы полигона
Yс пространственной информацией для графиков выборки
Импорт шейп файла Y (с maptools) и fortify ing как data.frame Z (ggplot2) отлично работает. melt ing X до X_melted работает одинаково хорошо. merge -ing Z и X_melted до mapdf также работает.
Это означает, что теперь мы имеем data.frame в длинной форме с пространственной информацией и var1, var2, var3,...
Теперь я хочу построить этот фрейм данных следующим образом:
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
Результат - хороший сюжет с одной панелью для каждой переменной. Карты панелей идентичны, но цвет заливки изменяется со значениями переменных. До сих пор все работает как шарм... с одной проблемой:
Переменные имеют разные значения min и max. Например, var1 идет от 0 до 5, var2 от 0 до 400, var3 от 5 до 10 и т.д. В этом примере легенда для заполнения цвет идет от 0 до 400. var2 красиво рисуется, но var1 и var3 находятся в основном в одном цвете.
Можно ли использовать другую легенду для каждой панели фасета? Или это просто не возможно (пока) возможно с facet_wrap или facet_grid в ggplot?
Я мог бы сделать отдельные графики для каждой переменной и объединить их с видовыми экранами, но там много переменных, и это будет большой работой.
Или может быть другой пакет или метод, который я мог бы использовать для выполнения того, что Id нравится делать?
И помощь будет очень оценена.:)
Изменить:
С помощью описания ggplot2 -package я построил пример, который иллюстрирует мою проблему:
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
Панель справа показывает различные значения для var2 на карте. На панели слева, однако, все полигоны имеют один и тот же цвет. Это логично, потому что для всех панелей используется только один цветовой градиент. Могу ли я использовать другой цветовой градиент для каждой панели?