#r #ggplot2
#r #ggplot2
Вопрос:
Итак, я пытаюсь построить гистограмму по фрейму данных -> y для столбца -> ProsperRating..numeric. (В конце имени переменной стоит точка).
Итак, это то, что у меня пока есть. (После наложения нормальной кривой).
h <- hist(y$ProsperRating..numeric.,breaks = c(0,1,2,3,4,5,6,7))
xfit <- seq(min(y$ProsperRating..numeric.) , max(y$ProsperRating..numeric.) , length = nrow(y))
yfit <- dnorm(xfit, mean = mean(y$ProsperRating..numeric.), sd = sd(y$ProsperRating..numeric.))
yfit <- yfit * length(y$ProsperRating..numeric.) *diff(h$mids[1:2]) * 1.8
lines(xfit,yfit,lwd = 2)
График гистограммы — Обратите внимание, что ячейки с номерами 1 и 2 слипаются
Есть ли какой-либо другой способ, которым я мог бы сделать это тоже? Всего noob до R.
Правка 1 : Числовой рейтинг процветания — это столбец в моем фрейме данных. Она содержит значение 1-7 с шагом в 1 ( x = seq(1,7,1)
). Это то, что я пытаюсь отобразить здесь.
Правка 2: добавление новой нормальной кривой. Изменен код для отражения разрывов. Новая нормальная кривая! Понятия не имею, правильно ли это сделано.
Комментарии:
1. И в чем ваша проблема?
2. Мне не нужно, чтобы первые две ячейки оставались неизменными, как на изображении. В остальном все нормально (я думаю)
3. добавьте некоторые воспроизводимые данные, например, используя
dput(your_data)
4. @Jimbou Я добавил информацию о данных!
5. Хорошо, я полагаю, что есть проблема с разрывами. Вы можете попробовать использовать
breaks = seq(0, 8, 0.5)
вместоbreaks = 10
.
Ответ №1:
Разрывы — это только предположение.
set.seed(1337)
hist(runif(20,1,10), breaks = 3) # only shows two bins
Единственный способ явно контролировать размер ячейки, предполагая, что это исправит ваш график. Предназначена для установки разрывов в вектор местоположений разрывов по оси x.
set.seed(1337)
hist(rnorm(20), breaks = c(-3,-2,-1,0,1,2,3))
При этом ячейки «слипаются», потому что именно так это и должно выглядеть. Существует около 1000 наблюдаемых значений между 1.5 и 2. Вы могли бы разделить их, добавив ячейку, в которой между ними нет данных, или, не глядя на ваши данные, добавив ячейку от 0 до 1, это могло бы устранить визуальную проблему breaks = c(0,1,2,3,4,5,6,7)
.
Я предлагаю сделать это.
x <- c(rep(1,8000),rep(2,10000),rep(3,15000), rep(4, 20000), rep(5, 15500), rep(6, 14500), rep(7, 5000))
hist(x, breaks = c(0,1,2,3,4,5,6,7))
Избавляется от всех пробелов вместе, на которые, я думаю, в любом случае гораздо лучше смотреть.
Комментарии:
1. Привет, @Matt L. Это сработало отлично. Большое вам спасибо. Можете ли вы сказать мне, правильно ли выглядит нормальная кривая? У меня такое чувство, что это неверно для данного графика. Спасибо!
2. @WhatIfTheyGetMe Это выглядит правильно. Возможно, вы захотите установить t-распределение вместо нормального. У t более толстые хвосты, и я думаю, что это лучше соответствовало бы вашим данным. Чтобы исправить ограничения на новом графике, вы можете сделать это
ylim = c(0,20000)
внутри функции hist.