[英]Density over histogram using ggplot2
我有“長”格式數據框,其中包含兩列:第一列 - 值,第二列 - 性別 [男 - 1/女 - 2]。 我寫了一些代碼來制作整個數據集的直方圖(下面的代碼)。
ggplot(kz6, aes(x = values)) +
geom_histogram()
但是,我還想在直方圖上添加一個密度以強調性別之間的差異,即我想組合 3 個圖:整個數據集的直方圖,以及每個性別的 2 個密度圖。 我嘗試使用一些示例( 一、 二、 三、 四),但它仍然不起作用。 密度代碼僅有效,而 hist + 密度的組合無效。
density <- ggplot(kz6, aes(x = x, fill = factor(sex))) +
geom_density()
both <- ggplot(kz6, aes(x = values)) +
geom_histogram() +
geom_density()
both_2 <- ggplot(kz6, aes(x = values)) +
geom_histogram() +
geom_density(aes(x = kz6[kz6$sex == 1,]))
PS 一些例子包含y=..density..
是什么意思? 這個怎么解釋?
要繪制直方圖並疊加由分類變量定義的兩個密度,請在對geom_density
的調用中使用適當的美學,例如group
或colour
。
ggplot(kz6, aes(x = values)) +
geom_histogram(aes(y = ..density..), bins = 20) +
geom_density(aes(group = sex, colour = sex), adjust = 2)
數據創建代碼。
我將從內置數據集iris
創建一個測試數據集。
kz6 <- iris[iris$Species != "virginica", 4:5]
kz6$sex <- "M"
kz6$sex[kz6$Species == "versicolor"] <- "F"
kz6$Species <- NULL
names(kz6)[1] <- "values"
head(kz6)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.