繁体   English   中英

如何使用一维数据框在ggplot aes中设置x,y?

[英]How to set x,y in ggplot aes with one dimension dataframe?

df <- data.frame(
    cola = c('1',NA,'c','1','1','e','1',NA,'c','d'),
    colb = c("A",NA,"C","D",'a','b','c','d','c','d'),
    colc = c('a',NA,'c','d','a',NA,'c',NA,'c','d'),stringsAsFactors = TRUE)

bad<-lapply(df, function(x) sum(is.na(x))/nrow(df))
bad<-as.data.frame(bad)

我想使对一维数据框的条形图bad

X轴应该是colacolbcolc ,Y轴应该是0.20.10.3 然后我尝试但失败了:

ggplot(bad,aes(x=colnames(bad), y=bad[1,])) + 
    geom_bar(stat='identity')

对于一维数据帧,如何设置aes(x=?,y=?)

您需要将数据帧转换为长格式。 您可以使用reshape2的melt函数。

dab <- reshape2::melt(bad)

> dab
  variable value
1     cola   0.2
2     colb   0.1
3     colc   0.3

ggplot(dab) + geom_bar(aes(x=variable, y=value, fill=variable), stat='identity')

您需要更改数据框的尺寸

library(ggplot2)
ggplot(stack(bad), aes(ind, values)) + geom_bar(stat='identity')

在此处输入图片说明

或者,如果你想要去的tidyverse方式,我们可以使用gather以及

ggplot(tidyr::gather(bad), aes(key, value)) + geom_bar(stat='identity')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM