在R中:从单个输出获取多个条形图
我有一个数据帧(100 x 4)。第一列是一组“箱”0-100,其余列是每个箱中每个事件变量的计数(0到最大事件数) 我想做的是将三列数据(2:4)中的每一列并排绘制。因为每个数据集的每个箱子中的计数几乎相同,所以尽管我使用了next=true和position=dodge,但在我创建的直方图/条形图中,数据是重叠的 我已经将第一列同时设置为数字和字符,但是结果是相同的——这些条相互重叠。(半透明密度图不起作用,因为我想要的是计数而不是分布密度) 所附代码基于R和其他文档生成了所附图表在R中:从单个输出获取多个条形图,r,R,我有一个数据帧(100 x 4)。第一列是一组“箱”0-100,其余列是每个箱中每个事件变量的计数(0到最大事件数) 我想做的是将三列数据(2:4)中的每一列并排绘制。因为每个数据集的每个箱子中的计数几乎相同,所以尽管我使用了next=true和position=dodge,但在我创建的直方图/条形图中,数据是重叠的 我已经将第一列同时设置为数字和字符,但是结果是相同的——这些条相互重叠。(半透明密度图不起作用,因为我想要的是计数而不是分布密度) 所附代码基于R和其他文档生成了所附图表 barp
barplot(BinCntDF$preT,main=NewMain_Trigger, plot=TRUE,
xlab="sample frequency interval counts (0-100 msec bins)",
names.arg=BinCntDF$dT, las=0,
ylab="bin counts", axes=TRUE, xlim=c(0,100),
ylim=c(0,1000), col="red")
geom_bar(position="dodge")
barplot(BinCntDF$postT, beside=TRUE, add=TRUE)
geom_bar()
目标是能够在相同轴上并排比较两个(或多个)数据集,而不重叠其他数据集。我认为您将
条形图
与ggplot2
混淆了ggplot2
是函数geom_bar
来自的库,与Base R附带的barplot
不兼容
只需比较?条形图
和?几何图形条
,您就会看到几何图形条
来自ggplot2
库。为了达到我使用ggplot2
库和restrape2
后的效果
library(reshape2)
a <- melt(df, id=c("x"))
步骤1
根据您的描述,我假设您的数据大致如下:
df <- data.frame(x = 1:10,
c1 = sample(0:100, replace=TRUE, size=10),
c2 = sample(0:50, replace=TRUE, size=10),
c3 = sample(0:70, replace=TRUE, size=10))
输出将如下所示
> head(a)
x variable value
1 1 c1 62
2 2 c1 47
3 3 c1 20
4 4 c1 64
5 5 c1 4
6 6 c1 52
步骤2
关于ggplot2
的功能和参数,网上有很多教程。我建议你用谷歌搜索,或者通过许多线程来了解
ggplot(a, aes(x=x, y=value, group=variable, fill=variable)) +
geom_bar(stat='identity', position='dodge')
这将为您提供以下输出:
简言之:
对感兴趣的变量进行分组group
确保不会对数据进行额外的聚合stat=identity
set.seed(123)
myDF <- data.frame(bins=1:100, x=sample(1:100, replace=T), y=sample(1:100, replace=T), z=sample(1:100, replace=T))
myDF.m <- melt(myDF, id.vars='bins')
ggplot(myDF.m, aes(x=bins, y=value, fill=variable)) + geom_bar(stat='identity', position='dodge')
谢谢大家。从您的评论中,我同意我错误地将ggplot和geom_栏与我的数据结合使用。正如您所写的,facet和ggplot/geom_条都适用于我的数据。我将修改代码和数据结构,以两种方式绘制数据,并查看哪种可视化效果最好,然后发布结果-如果可能,则发布图表,如果不可能,则发布简单的上/下拇指。
ggplot(myDF.m, aes(x=bins, y=value, fill=variable)) + geom_bar(stat='identity') + facet_wrap(~ variable)