美文网首页
ggplot-aes_string()使用列索引编号获取列名-示

ggplot-aes_string()使用列索引编号获取列名-示

作者: 倪桦 | 来源:发表于2022-07-01 13:50 被阅读0次

    应用ggplot2对数据框的列数据进行循环画图的时候,由于aes()的参数不能指定字符串形式的列名(如aes(y="column_A")是不支持的),可以使用aes_string(y="column_A")来传递字符串形式的列名,这样每次处理不同的列数据的时候通过列编号获取列名传递,绘图数据的列名可以通过names(data.plot)[col.number]方法由列号取得。

    getData <- function(n=100,is.str=FALSE){
        data.retro = data.frame(
            value = ceiling(runif(n = n,min = -1,max = 1)),
            UMIcounts = round(runif(n = n,min = 0,max = 10000),0),
            norm = rnorm(n=n,mean=10,sd=1),
            expr = rexp(n),
            No = seq(n)
        )
        if (is.str) {
            data.retro = cbind(data.retro,strings = stringi::stri_rand_strings(n, 5, pattern = "[A-Za-z0-9]"))
        }
        rownames(data.retro) = make.unique(stringi::stri_rand_strings(n, 5, pattern = "[A-Za-z0-9]"), sep = '_')
        return(data.retro)
    }
    data.plot <- getData(30)%>% tibble::rownames_to_column("Class") %>% select(Class,expr)
    
    > data.plot
       Class       expr
    1  E8Qh8 0.35570062
    2  hI2yy 0.04600188
    3  o0jOk 0.54236507
    ... 30 rows * 2 cols
    

    使用aes_string()可以使用字符串形式的变量名,如通过 names(data.plot)[2]可以获取绘图数据第2列的列名"expr"

    条形统计直方图

    data.plot %>% ggplot(aes_string(x = "Class",y = names(.)[2])) + 
       geom_bar(stat = "identity",fill="skyblue",color="red") +
       ggtitle(names(data.plot)[2])+ theme_bw() + coord_flip() + 
       theme(plot.title = element_text(hjust = 0.5,face = 1,size = 15),axis.title.x = element_blank())
    

    相关文章

      网友评论

          本文标题:ggplot-aes_string()使用列索引编号获取列名-示

          本文链接:https://www.haomeiwen.com/subject/agscbrtx.html