如何使用stat ="identity"ggplot躲避条形图?

use*_*854 7 r ggplot2

我有一个包含两列A和B的数据框.我想生成一个条形图,其中A和B的值并排绘制(躲闪).我用Google搜索并从包ggplot2中找到了ggplot.默认设置是使用频率生成条形图,但有一个选项stat="identity"允许选择一个变量来明确设置条形高度.我可以像这样绘制一列:

d <- data.frame(A=c(1:10), B=c(11:20))
ggplot(data=d, aes(x=1:length(A), y=A))+geom_bar(stat="identity", position="dodge")
Run Code Online (Sandbox Code Playgroud)

如何并排绘制两列?我可以不同地构造我的数据框:将来自向量A和B的值附加到一列中并创建指示符变量ind,然后使用它来定义组aes(group=ind).这可以按d原样使用数据框,而不修改其结构吗?

Jus*_*tin 7

您可以使用meltreshape2包就像你正在寻找创造的情节.

library(reshape2)
d$ind <- seq_along(d$A)

d.m <- melt(d, id.var='ind')

ggplot(d.m, aes(x=ind, y=value, fill=variable)) + 
  geom_bar(stat='identity', position='dodge')
Run Code Online (Sandbox Code Playgroud)

通常,ggplot在单个data.frame中提供所有数据时效果最佳.每个geom类型至少有一个data.frame.