簡體   English   中英

使用 ggplot2 的直方圖上的密度

[英]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的調用中使用適當的美學,例如groupcolour

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM