Извините за то, что не включены какие-либо примеры данных для моей проблемы.Я не мог найти способ легко создать файл формы примера.Надеюсь, опытные пользователи ggplot
смогут увидеть, что я хотел бы сделать из приведенного ниже описания.
У меня есть:
A data.frame
Xс информацией об образцах графиков (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
В результате получается хороший график с одной панелью для каждой переменной.Карты панелей идентичны, но цвет заливки зависит от значений переменных.До сих пор все работает как шарм ... с одной проблемой:
Переменные имеют разные минимальные и максимальные значения.Например, var1
изменяется от 0
до 5
, var2
от 0
до 400
, var3
от 5
до 10
и т. Д. В этом примере легенда для заливкицвет меняется от 0
до 400
.var2
красиво нарисован, но var1
и var3
в основном одного цвета.
Можно ли использовать разные легенды для каждой панели фасета?Или это просто (пока) невозможно с facet_wrap
или facet_grid
в ggplot
?
Я мог бы сделать отдельные графики для каждой переменной и объединить их с областями просмотра, но там много переменных, и этобыло бы много работы.
Или, может быть, есть другой пакет или метод, который я мог бы использовать, чтобы выполнить то, что я хотел бы сделать?
И помощь будет очень признательна.:)
Редактировать: С помощью описания ggplot2
я создал пример, иллюстрирующий мою проблему:
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
на карте.Однако на панели слева все полигоны имеют одинаковый цвет.Это логично, потому что для всех панелей используется только один цветовой градиент.Могу ли я использовать разные цветовые градиенты для каждой панели?