分类变量的频率密度条形图

时间:2016-04-08 08:39:17

标签: r bar-chart frequency

我想绘制以下有序分类数据的频率密度的条形图:

summary(ACC[EA$TYPE=="A"])
NG SG LG MG HG 
 2 25 36 17  0 

如果我绘图:

plot(ACC[EA$TYPE=="A"])

我明白了:

enter image description here

但是我想将所有值除以总数来得到频率密度: IE浏览器。 plot(ACC[EA$TYPE=="A"]/sum(as.numeric(ACC[EA$TYPE=="A"])))但这不起作用。有什么提示吗?

干杯,

2 个答案:

答案 0 :(得分:2)

reproducible example修复它会更容易,所以我为你创建了一个。以下工作就像一个魅力:

# creates the vector
x <- c(2, 25, 36, 17,  0)
names(x) <-  c("NG", "SG", "LG", "MG", "HG") 

# raw x = counts
barplot(x, ylab="Count")
# when divided by the total count, we obtain frequencies and we barplot them
barplot(x/sum(x), ylab="Frequency")

只要ACC[EA$TYPE=="A"]是数字,我就没有理由认为这不起作用:

barplot(ACC[EA$TYPE=="A"]/sum(ACC[EA$TYPE=="A"]), ylab="Frequency")

答案 1 :(得分:2)

factor的默认绘图功能为barplot。因此,如果您想要一个不同的图形,可能更容易直接使用此函数:(使用随机因子示例)

f <- factor(sample(letters[1:5], 100, r=T))
h <- table(f) / length(f)
barplot(h)

enter image description here

获取same result with ggplot2比较棘手,出于某种原因,我需要将数据放在data.frame中才能正常工作:

dat <- data.frame(f = f)
library(ggplot2)
ggplot(dat, aes(x=f, y=..count.. / sum(..count..), fill=f)) + geom_bar()

enter image description here