#r #ggplot2 #histogram
Вопрос:
У меня есть набор данных в этом формате, и я хотел бы сделать график сгруппированной гистограммы и с диапазонами, т. Е. 10-20, 20-30, ..., 90-100
.
group weight
1 A 54
2 A 55
3 B 52
4 B 53
5 C 60
Я попытался создать гистограмму следующим образом, но не уверен, как сделать диапазоны весов по оси X.
ggplot(df, aes(x = weight))
geom_histogram(aes(color = gp), fill = "white",
position = "identity", bins = 30)
scale_color_manual(values = c("red", "blue", 'green'))
На самом деле мне нужна гистограмма, подобная следующей
Ответ №1:
Это гистограмма, а не гистограмма. Вот подход к его воспроизведению:
library(dplyr)
df %>%
mutate(weight_class = cut(weight,
breaks = seq(20, 60, by = 10))) %>%
ggplot()
geom_bar(aes(x = weight_class, fill = group), position = "dodge")
scale_fill_manual(values = c("red", "blue", "green"))
Комментарии:
1. Это приводит к следующей ошибке
Error in cut(weight, breaks = seq(20, 60, by = 10)) : object 'weight' not found
2. Есть ли у вашего
df
объектаweight
столбец?3. Да, в нем действительно есть
weight
колонка. Я выполняю синтаксис в R studio следующим образомdf <- mutate(weight_class = cut(weight, breaks = seq(20, 60, by = 10)))
4. Это не сработает. Но ты можешь позвонить
df <- mutate(df, weight_class = cut(weight, breaks = seq(20, 60, by = 10)))
5. Спасибо!! Теперь это выглядит хорошо, когда я выполнил следующее
df<- mutate(df, weight_class = cut(weight, breaks = seq(20, 70, by = 10)))
иggplot(df) geom_bar(aes(x = weight_class, fill = gp), position = "dodge") scale_fill_manual(values = c("red", "blue", "green"))