我有一个包含两列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")
如何并排绘制两列?我可以不同地构造我的数据框:将来自向量A和B的值附加到一列中并创建指示符变量 ind
,然后使用它来定义组 aes(group=ind)
. 这可以用数据框 d
原样完成,而不修改其结构吗?
2 回答
你可以使用
reshape2
包中的melt
来创建你正在寻找的情节 .通常,当您在单个data.frame中提供所有数据时,
ggplot
效果最佳 . 每个geom类型至少有一个data.frame .唯一的好方法是重新排列数据以满足'ggplot'功能的需要 . 但是,如果你想全部排成一行,你可以 . 您只需手动重塑数据,如下所示:
在这里,我从旧的数据框中创建了一个新的数据框,并分配了相应的变量名(这就是'reshape2'包与'melt'函数的作用) . 然后,我手动将x值分配为1:10为“A”,将1:10分配给“B”以使条形显示为彼此相邻,而不是从1:20开始按顺序排列 . 我添加了一个'fill'参数来改变条形的颜色来表示“A”或“B” .