Проблемы создания гистограммы с помощью ggplot - PullRequest
1 голос
/ 30 апреля 2020

Я хочу построить простую гистограмму роста, веса и возраста, являющегося возрастом по оси X, используя ggplot

Сначала я строю различные меры и создаю кадр данных:

age <- seq(from=10, to=21)
age

height <- c(147,152,157,160,163,172,177,180,183,184,185,185)
height

weight <- c(47,54,61,63,65,66,69,72,79,81,82,83)
weight

df <- data.frame(age,height,weight, stringsAsFactors = F)
df$age <- as.numeric(df$age)


df$class[df$age <14] = "child"
df$class[df$age <=17 & df$age>=14] = "teen"
df$class[df$age >17] = "adult"
df

А потом я делаю простую гистограмму:

library(ggplot2)

ggplot(df, aes(x=age, y=height))+geom_histogram(fill="white",color="black",stat="identity",bins=12)

Проблема в том, что гистограмма продолжает отображаться как гистограмма, причем переменная возраста выглядит как дискретная переменная, а не непрерывная, и не давая назначенный год для каждого бара:

graph

А также я получаю это сообщение об ошибке:

Предупреждение: «Игнорирование неизвестных параметров: binwidth, bins , pad "

Я пробовал с scale_x_continuous, scale_y_continuous, без них, только с scale_x_continuous, я проверил, была ли переменная age числовой и все те же проблемы. Может быть, я упускаю очень простую вещь, я не уверен, но я был бы очень признателен за любую помощь.

Заранее спасибо

1 Ответ

1 голос
/ 30 апреля 2020

Если вы хотите, чтобы гистограмма age на height, вы должны передать weight = height как geom_histogram эстетику c, а не как y координату.
Я также переделал набор данных в более простой способ, используя cut для определения (ненужного) class вектора.

age <- 10:21
height <- c(147,152,157,160,163,172,177,180,183,184,185,185)
weight <- c(47,54,61,63,65,66,69,72,79,81,82,83)
class <- cut(age, 
             breaks = c(0, 14, 17, Inf), 
             labels = c("child", "teen", "adult"))
df <- data.frame(age, height, weight, class, stringsAsFactors = F)

ggplot(df, aes(age)) +
  geom_histogram(aes(weight = height),
                 fill = "white", 
                 color = "black", 
                 bins = 12)

enter image description here

...