Различные легенды и цвета заливки для фасетной диаграммы ggplot?

Извините за то, что не включил никаких данных для примера для моей проблемы. Я не мог найти способ легко создать пример файла формы. Надеюсь, опытные пользователи ggplot смогут увидеть, что я хотел бы сделать, из приведенного ниже описания.

У меня есть:

  • A data.frame X с информацией об образцах графиков ( plotid , var1 , var2 , var3 , var4 , …)

  • Шейп-файл многоугольника Y с пространственной информацией для демонстрационных графиков

Импорт шейп-файла Y maptools ) и укрепить как data.frame Z ( ggplot2 ) работает нормально. melt ing X to X_melted работает одинаково хорошо. merge -ing Z и X_melted to mapdf также работает.

Это означает, что теперь у нас есть данные .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 на карте. Однако на панели слева все многоугольники одного цвета. Это логично, ведь для всех панелей используется только один цветовой градиент. Могу ли я использовать разные цветовые градиенты для каждой панели?

16
задан hrbrmstr 4 January 2015 в 22:19
поделиться