[英]Creating a density histogram in ggplot2?
我想用ggplot2
創建下一個直方圖密度圖。 以“正常”方式(基本包)非常簡單:
set.seed(46)
vector <- rnorm(500)
breaks <- quantile(vector,seq(0,1,by=0.1))
labels = 1:(length(breaks)-1)
den = density(vector)
hist(df$vector,
breaks=breaks,
col=rainbow(length(breaks)),
probability=TRUE)
lines(den)
到目前為止,我已經使用 ggplot 達到了這一點:
seg <- cut(vector,breaks,
labels=labels,
include.lowest = TRUE, right = TRUE)
df = data.frame(vector=vector,seg=seg)
ggplot(df) +
geom_histogram(breaks=breaks,
aes(x=vector,
y=..density..,
fill=seg)) +
geom_density(aes(x=vector,
y=..density..))
但是“y”比例尺有錯誤的維度。 我已經注意到下一次運行正確地獲得了“y”比例。
ggplot(df) +
geom_histogram(breaks=breaks,
aes(x=vector,
y=..density..,
fill=seg)) +
geom_density(aes(x=vector,
y=..density..))
我就是不明白。 y=..density..
在那里,那應該是高度。 那么究竟為什么當我嘗試填充時我的比例會被修改呢?
我確實需要顏色。 我只想要一個直方圖,其中每個塊的中斷和顏色是根據默認的 ggplot 填充顏色定向設置的。
我手動為您的百分位條添加了顏色。 看看這是否適合你。
library(ggplot2)
ggplot(df, aes(x=vector)) +
geom_histogram(breaks=breaks,aes(y=..density..),colour="black",fill=c("red","orange","yellow","lightgreen","green","darkgreen","blue","darkblue","purple","pink")) +
geom_density(aes(y=..density..)) +
scale_x_continuous(breaks=c(-3,-2,-1,0,1,2,3)) +
ylab("Density") + xlab("df$vector") + ggtitle("Histogram of df$vector") +
theme_bw() + theme(plot.title=element_text(size=20),
axis.title.y=element_text(size = 16, vjust=+0.2),
axis.title.x=element_text(size = 16, vjust=-0.2),
axis.text.y=element_text(size = 14),
axis.text.x=element_text(size = 14),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank())
fill=seg
導致分組。 對於seg
每個值,您實際上得到了不同的直方圖。 如果你不需要顏色,你可以使用這個:
ggplot(df) +
geom_histogram(breaks=breaks,aes(x=vector,y=..density..), position="identity") +
geom_density(aes(x=vector,y=..density..))
如果您需要顏色,在 ggplot2 之外計算密度值可能是最簡單的。
或者ggpubr
一個選項
library(ggpubr)
gghistogram(df, x = "vector", add = "mean", rug = TRUE, fill = "seg",
palette = c("#00AFBB", "#E7B800", "#E5A800", "#00BFAB", "#01ADFA",
"#00FABA", "#00BEAF", "#01AEBF", "#00EABA", "#00EABB"), add_density = TRUE)
關於解釋y-axis
的混淆可能是由於密度繪制而不是計數。 因此, y-axis
的值是總樣本的比例,其中條形的總和等於1
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.