Обновление в свете проясненного вопроса
set.seed(1)
dat2 <- data.frame(fac = factor(sample(LETTERS, 100, replace = TRUE)))
hist(table(dat2), xlab = "Frequency of Level Occurrence", main = "")
дает:
Здесь мы просто применяем hist()
непосредственно к результату table(dat)
. table(dat)
предоставляет частоты для каждого уровня фактора, а hist()
создает гистограмму этих данных.
Исходный
Есть несколько возможностей. Ваши данные:
dat <- data.frame(fac = rep(LETTERS[1:4], times = c(3,3,1,5)))
Вот три, из первой колонки, сверху вниз:
- Методы построения по умолчанию для класса
"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)
это производит:
Если у вас просто есть данные в переменной factor
(кстати, неудачный выбор имени), то в моих примерах кода можно использовать table(factor)
, а не table(dat)
или table(dat$fac)
.
Для полноты картины пакет lattice
является более гибким, когда дело доходит до создания точечной диаграммы, поскольку мы можем получить желаемую ориентацию:
require(lattice)
with(dat, dotplot(fac, horizontal = FALSE))
давая:
И версия ggplot2
:
require(ggplot2)
p <- ggplot(data.frame(Freq = tab, fac = names(tab)), aes(fac, Freq)) +
geom_point()
p
давая:
person
Gavin Simpson
schedule
27.04.2011