如何使用变量来指定ggram中的列名我有个命令ggplot( rates.by.groups, aes(x=name, y=rate, colour=majr, group=majr) )在一个函数里。但是我希望能够使用函数的一个参数来选择列作为颜色和组。我想要这样的东西f <- function( column ) {
...
ggplot( rates.by.groups, aes(x=name, y=rate, colour= ??? , group=??? ) )}以便由参数来确定ggg图中使用的列。例如,对于f(“main”),我们得到的效果是ggplot( rates.by.groups, aes(x=name, y=rate, colour=majr, group=majr) )但是对于f(“性别”),我们得到的效果是 ggplot( rates.by.groups, aes(x=name, y=rate, colour=gender, group=gender) )有些事我试过了:ggplot( rates.by.groups, aes(x=name, y=rate, colour= columnName , group=columnName ) )不起作用。也没有e <- environment() ggplot( rates.by.groups, aes(x=name, y=rate, colour= columnName , group=columnName ), environment=e )
3 回答
慕田峪9158850
TA贡献1794条经验 获得超7个赞
aes_string
:
f <- function( column ) { ... ggplot( rates.by.groups, aes_string(x="name", y="rate", colour= column, group=column ) )}
f("majr")
f(majr)
"name"
"rate"
aes_string
ggplot( rates.by.groups, aes(x=name, y=rate, colour= get(column), group=get(column) ) )
HUWWW
TA贡献1874条经验 获得超12个赞
ggplot2 > 3.0.0
.data
rates.by.groups
library(ggplot2)theme_set(theme_classic(base_size = 14))# created by @Moody_Mudskipperrates.by.groups <- data.frame( name = LETTERS[1:3], rate = 1:3, mjr = LETTERS[c(4, 4, 5)], gender = c("M", "F", "F"))f1 <- function(df, column) { gg <- ggplot(df, aes(x = name, y = rate, fill = .data[[column]], group = .data[[column]])) + geom_col() + labs(fill = column) return(gg)}plot_list <- lapply(list("gender", "mjr"), function(x){ f1(rates.by.groups, x) })plot_list#> [[1]]
#> #> [[2]]
# combine all plotslibrary(egg)ggarrange(plots = plot_list, nrow = 2, labels = c('A)', 'B)'))
- 3 回答
- 0 关注
- 739 浏览
添加回答
举报
0/150
提交
取消