#r #histogram
Вопрос:
Можно ли сделать гистограмму в R с ячейками разных размеров? Я работаю с данными подсчета, и нули должны иметь свою собственную ячейку, но другие числа могут быть объединены во все, что имеет смысл. Одна гистограмма для всех подсчетов рыбы-это нормально.
fishlt;-structure(list(num = c(0, 11, 1, 0, 13, 11, 0, 1, 0, 0, 11, 11, 0, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 9, 0, 2, 1, 0, 7, 6, 0, 4, 8, 0, 8, 6, 0)), class = "data.frame", row.names = c(NA,-50L))
Комментарии:
1. Может быть, попробуем:
barplot(table(fish$num))
?2. Близко, но нет способа связать и другие числа тоже? Это всего лишь выдуманный набор данных, реальный содержит 142 уникальных номера, поэтому ячейки для каждого отдельного номера будут очень тонкими.
3. Попробуй вырезать?
barplot(table(cut(fish$num, c(-1, seq(0, 15, 3)))), space = 0)
4. Достаточно хорошо, ха-ха. Спасибо!
Ответ №1:
Используйте cut, чтобы иметь 0 самостоятельно, затем используйте seq для создания ячеек:
barplot(table(cut(fish$num, c(0, seq(1, 15, 3)), right = FALSE)), space = 0)
Изменить: Первая строка содержит только нули, см.:
table(fish$num) # 0 1 2 4 6 7 8 9 10 11 13 #31 4 1 1 2 1 2 1 1 4 2 table(cut(fish$num, c(0, seq(1, 15, 3)), right = FALSE)) # [0,1) [1,4) [4,7) [7,10) [10,13) # 31 5 3 4 5
Комментарии:
1. Включает ли первая ячейка 1? Я думаю, что это сработало лучше: barplot(таблица(вырезать(рыба$num, c(-1, seq(0, 15, 3)))), пробел = 0)
2. @Nate см. правку, первая строка включает только 0.
3. Отлично, спасибо!
Ответ №2:
Вы можете указать, чтобы разрывы были любыми, какими вы хотите, с breaks
помощью параметра hist()
функции. Вы должны объединить это с freq = TRUE
параметром, иначе вы получите график плотности, и плотность при нуле будет бесконечной. Однако сюжет выглядит не очень хорошо, потому что нулевая ячейка не имеет ширины:
hist(fish$num, breaks = c(0, 0, 5, 10, 15, 20), freq=TRUE)
Я не уверен, что вы хотели бы сделать вместо этого.
Комментарии:
1. Возможно, измените разрывы на
c(0, 1, 5, 10, 15, 20)
на панель получения для значения 0.2. @zx8754, я думаю, что ваша идея просто отказаться от гистограммы и использовать гистограмму лучше. Я бы, вероятно, попытался установить метки вручную, например
c("0", "1-5", "6-10", "11-15")
.