Гистограмма в R с 1 ячейкой только для нулей

#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") .