2

我来自 python 代码的(巨大)数据框由每个样本的不同大小类的计数组成,如下所示:

dummy <- as.data.frame(matrix(nrow = 10, ncol = 12))
colnames(dummy) <- c("ID", paste("cl", c(1:11), sep = "."))
dummy$ID <- c(letters[1:10])
dummy[, -1] <- rep(round(abs(rnorm(11))*1000,0), 10)

我尝试为在 X 轴上具有大小类别和在 Y 轴上具有计数(频率)的每个样本(ID)创建计数的直方图。没有成功 with hist(), 结合as.numeric()and t()and as.table()...

我没有成功告诉 R 这个数据框(至少部分)是一个表,其中计数已经分布在colnames. 我确定我不是第一个寻找这个但两天以来找不到答案的人,可能是因为我没有得到正确的关键字(?)。

有人可以帮忙吗?

4

2 回答 2

3

直方图基本上是一种特殊的条形图。所以你可以只使用 function barplot

为此,我更喜欢包 ggplot2:

#reshape to long format
library(reshape2)    
dummy <- melt(dummy, id.var="ID")

library(ggplot2)    
p <- ggplot(dummy, aes(x=variable, y=value)) + 
  geom_histogram(stat="identity") + 
   #specifying stat_identity tells ggplot2 that the data is already binned
  facet_wrap(~ID, ncol=2)

print(p)

在此处输入图像描述

于 2013-08-13T21:50:48.497 回答
2

ggplot2 非常适合此类问题,但您也可以使用基本 R 图形来做一些事情。它不是超级漂亮,但例如我会这样做:

par(mfrow=c(5,2))
par(mar=c(2,2,2,1))
for (i in 1:nrow(dummy)) {
  barplot(as.numeric(dummy[i,-1]), names.arg=colnames(dummy[1,-1], main=dummy[i,1])
}

在此处输入图像描述

于 2013-10-10T20:30:21.367 回答