В R, Как манипулировать (используя манипулировать pkg) переменную ggplot "fill"
Использование этого в качестве отправной точки: ggplot / mapping графств США - проблемы с формами визуализации в R
Я хотел добавить элемент управления для переменной заполнения. Что-то похожее на это:
if (!require("pacman")) install.packages("pacman")
pacman::p_load(ggplot2, XLConnect, rgdal, RColorBrewer, data.table, mapproj, manipulate)
#additional lines
county.data[obesity.data,obesity09:=PCT_OBESE_ADULTS09]
county.data[obesity.data,obesity10:=PCT_OBESE_ADULTS10]
county.data[obesity.data,obesity13:=PCT_OBESE_ADULTS13]
manipulate({ggplot(map.df, aes(x=long, y=lat, group=group, fill=ObesityYear)) +
scale_fill_gradientn("",colours=brewer.pal(9,"YlOrRd"))+
geom_polygon()+coord_map()+
labs(title="2010 Adult Obesity by County, percent",x="",y="")+
theme_bw()}, ObesityYear = picker("obesity09", "obesity10", "obesity13"))
Но, конечно, ggplot не распознает переменную ObesityYear как часть кадра данных и выдает ошибку:
Ошибка в eval(expr, envir, enclos): объект 'ObesityYear' не найден
РЕДАКТИРОВАТЬ ПОСЛЕ КОММЕНТАРИИ СИД К РЕШЕНИЮ
manipulate({ggplot(map.df, aes_string(x='long', y='lat', group='group', fill=ObesityYear)) +
geom_polygon()+coord_map()+
theme_bw()}, ObesityYear = picker('obesity09', 'obesity10', 'obesity13'))
1 ответ
Чтобы это работало, нужно использовать aes_string
для того, чтобы иметь возможность использовать выбор строки в picker
функция.
Посмотрите на этот пример:
#example data.table
set.seed(5)
dt <- data.table(a = runif(10),
b = runif(10),
fillvar1 = factor(sample.int(2,20, rep=T)),
fillvar2 = factor(sample.int(2,20, rep=T)),
fillvar3 = factor(sample.int(2,20, rep=T)))
Решение:
library(manipulate)
manipulate({
ggplot(dt, aes_string('a', 'b', colour=choose_var )) + geom_point()},
choose_var = picker('fillvar1','fillvar2','fillvar3'))
Трудно загрузить изображение, чтобы показать интерактивность, но в приведенном выше коде вы заметите, что каждый раз, когда вы выбираете другое значение, цвета точек меняются соответственно.