Ответ 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")
У меня возникли проблемы с созданием гистограммы в 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")
Любые идеи о том, как его исправить?
Используйте аргумент breaks:
hist(data, breaks=seq(0,80,l=6),
freq=FALSE,col="orange",main="Histogram",
xlab="x",ylab="f(x)",yaxs="i",xaxs="i")
В качестве предложения используется целое число, указанное как аргумент для nclass
:
число - только предложение
Альтернативным решением является cut
ваш вектор в указанное число групп и нарисуйте результат:
plot(cut(data, breaks = 4))
Основываясь на ответе Роба Хиндмана:
Возможно, более общим решением было бы сделать перерывы с учетом минимальных и максимальных значений данных, а также числа разрывов = число_объектов + 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")
Если вы не против использования чего-то другого, кроме базовой графики, всегда есть способ 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
Мне нравится быть довольно точным в отношении моих данных:
hist(data,breaks = seq(min(data),max(data),by=((max(data) - min(data))/(length(data)-1))))
Это должно автоматизировать процесс с небольшим ручным вводом.