来自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轴上具有尺寸等级的每个样本(ID)创建计数的直方图,并计算Y轴上的计数(频率)。使用hist()
和as.numeric()
以及t()
合并as.table()
没有成功......
我没有成功告诉R这个数据框(至少部分)是一个表,其中的计数已经分布在colnames
的二进制位中。我敢肯定我不是第一个找那个但却找不到答案的人,可能是因为我找不到合适的关键字(?)。
有人可以帮忙吗?
答案 0 :(得分:3)
直方图基本上是一种特殊的条形图。所以你可以使用函数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)
答案 1 :(得分: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])
}