Точное количество бункеров в гистограмме в R

У меня возникли проблемы с созданием гистограммы в R. Проблема в том, что я говорю, что она делает 5 бункеров, но она делает 4, и я говорю, чтобы сделать 5, и это делает 8 из них.

data <- c(5.28, 14.64, 37.25, 78.9, 44.92, 8.96, 19.22, 34.81, 33.89, 24.28, 6.5, 4.32, 2.77, 17.6, 33.26, 52.78, 5.98, 22.48, 20.11, 65.74, 35.73, 56.95, 30.61, 29.82);

hist(data, nclass = 5,freq=FALSE,col="orange",main="Histogram",xlab="x",ylab="f(x)",yaxs="i",xaxs="i")

Любые идеи о том, как его исправить?

Ответ 1

Используйте аргумент breaks:

hist(data, breaks=seq(0,80,l=6),
       freq=FALSE,col="orange",main="Histogram",
       xlab="x",ylab="f(x)",yaxs="i",xaxs="i")

enter image description here

Ответ 2

В качестве предложения используется целое число, указанное как аргумент для nclass:

число - только предложение

Альтернативным решением является cut ваш вектор в указанное число групп и нарисуйте результат:

plot(cut(data, breaks = 4))

enter image description here

Ответ 3

Основываясь на ответе Роба Хиндмана:

Возможно, более общим решением было бы сделать перерывы с учетом минимальных и максимальных значений данных, а также числа разрывов = число_объектов + 1.

hist(data,breaks=seq(min(data),max(data),l=number_of_bins+1), 
     freq=FALSE,col="orange",
     main="Histogram",xlab="x",ylab="f(x)",yaxs="i",xaxs="i")

Ответ 4

Если вы не против использования чего-то другого, кроме базовой графики, всегда есть способ ggplot2:

Библиотека (ggplot2)

data < - data.frame(x = данные)

    ggplot(data, aes(x=x))+
      geom_histogram(binwidth=18,color="black", fill="grey")+
      scale_x_continuous(breaks=c(0,20,40,60,80)

ggplot2 имеет отличную документацию по адресу: docs.ggplot2.org/current/

Для конкретных примеров гистограммы: http://docs.ggplot2.org/current/geom_histogram.html

Ответ 5

Мне нравится быть довольно точным в отношении моих данных:

hist(data,breaks = seq(min(data),max(data),by=((max(data) - min(data))/(length(data)-1))))

Это должно автоматизировать процесс с небольшим ручным вводом.