..count.. или..density.. как имя переменной в ggplot2
Я хочу сделать это в конце концов:
library(ggplot2)
density=TRUE
if (density) {ggplot(diamonds,aes(x=price)) + geom_histogram(aes(y=..density..),binwidth=1000) + facet_wrap(~color)
} else ggplot(diamonds,aes(x=price)) + geom_histogram(aes(y=..count..),binwidth=1000) + facet_wrap(~color)
но я хочу использовать имена переменных для "..count.." или "..density..". Я попробовал пару вещей, но не смог:
if (density) {y.scale ="..density.."} else y.scale ="..count.."
ggplot(diamonds,aes(x=price)) + geom_histogram(aes(y=get(y.scale)),binwidth=1000) + facet_wrap(~color)
ggplot(diamonds,aes(x=price)) + geom_histogram(aes(as.formula(paste("y=",y.scale))),binwidth=1000) + facet_wrap(~color)
Есть идеи, как передать имена переменных в aes()?
1 ответ
Решение
Я думаю, что вы после aes_string()
вместо aes()
: http://docs.ggplot2.org/current/aes_string.html
т.е.
foo <- "..density.."
ggplot(diamonds, aes(price)) +
geom_histogram(aes_string(y = foo),binwidth=1000) +
facet_wrap(~color)