wds*_*wds 17 plot r histogram frequency-distribution
我有一个有很多不同价值观的因素.如果执行summary(factor)输出,则列出不同的值及其频率.像这样:
A B C D
3 3 1 5
Run Code Online (Sandbox Code Playgroud)
我想制作频率值的直方图,即X轴包含发生的不同频率,Y轴包含具有此特定频率的因子数.完成这样的事情的最佳方法是什么?
编辑:感谢下面的答案,我发现我能做的就是从表中得到频率因子,然后在表格中得到它,然后绘制图形,这看起来像(如果f是因素):
plot(factor(table(f)))
Run Code Online (Sandbox Code Playgroud)
Rei*_*son 27
根据澄清的Q更新
set.seed(1)
dat2 <- data.frame(fac = factor(sample(LETTERS, 100, replace = TRUE)))
hist(table(dat2), xlab = "Frequency of Level Occurrence", main = "")
Run Code Online (Sandbox Code Playgroud)
得到:

这里我们hist()直接应用于结果table(dat).table(dat)提供每个级别因子的频率并hist()产生这些数据的直方图.
原版的
有几种可能性.你的数据:
dat <- data.frame(fac = rep(LETTERS[1:4], times = c(3,3,1,5)))
Run Code Online (Sandbox Code Playgroud)
这里有三个,从第一列,从上到下:
"table",绘制数据和类似柱状图的条形图生成它们的代码:
layout(matrix(1:4, ncol = 2))
plot(table(dat), main = "plot method for class \"table\"")
barplot(table(dat), main = "barplot")
tab <- as.numeric(table(dat))
names(tab) <- names(table(dat))
dotchart(tab, main = "dotchart or dotplot")
## or just this
## dotchart(table(dat))
## and ignore the warning
layout(1)
Run Code Online (Sandbox Code Playgroud)
这会产生:

如果你只是有你的数据变量factor(恶名选择的方式),那么table(factor)可以使用,而不是table(dat)或者table(dat$fac)在我的代码示例.
为了完整性,lattice在生成点图时,包更加灵活,因为我们可以获得您想要的方向:
require(lattice)
with(dat, dotplot(fac, horizontal = FALSE))
Run Code Online (Sandbox Code Playgroud)
赠送:

还有一个ggplot2版本:
require(ggplot2)
p <- ggplot(data.frame(Freq = tab, fac = names(tab)), aes(fac, Freq)) +
geom_point()
p
Run Code Online (Sandbox Code Playgroud)
赠送:

| 归档时间: |
|
| 查看次数: |
51102 次 |
| 最近记录: |