如何使用變量來指定ggram中的列名我有個命令ggplot( rates.by.groups, aes(x=name, y=rate, colour=majr, group=majr) )在一個函數(shù)里。但是我希望能夠使用函數(shù)的一個參數(shù)來選擇列作為顏色和組。我想要這樣的東西f <- function( column ) {
...
ggplot( rates.by.groups, aes(x=name, y=rate, colour= ??? , group=??? ) )}以便由參數(shù)來確定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 回答

牛魔王的故事
TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個贊
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) ) )

智慧大石
TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個贊
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 關(guān)注
- 615 瀏覽
添加回答
舉報(bào)
0/150
提交
取消