ggplot2繪制密度圖和直方圖


本文講述如何利用ggplot2繪制密度圖和直方圖

準(zhǔn)備數(shù)據(jù):

set.seed(1126)? #設(shè)置隨機(jī)種子,讓結(jié)果可重復(fù)

data <- rnorm(100)? #生成100個(gè)符合正態(tài)分布的數(shù)字

min <- floor(min(data))? ?#這一串?dāng)?shù)字的最小值向下取整

max <- ceiling(max(data))? ?#這一串?dāng)?shù)字的最大值向上取整

range <- cut(data,breaks = seq(min,max,0.5))? ?#以0.5為間隔,分割數(shù)據(jù)

data <- as.data.frame(data)

text <- as.data.frame(summary(range))? ?#此數(shù)據(jù)框?yàn)間eom_text做準(zhǔn)備

text$x <- seq(min+0.25,max-0.25,0.5)? ? #設(shè)置圖中標(biāo)記文本的橫坐標(biāo)

colnames(text)[1] <- "count"

text$prop <- proportions(text$count)? ? #計(jì)算構(gòu)成比


開始畫圖:

ggplot(data = data,aes(data,..density../2))+? ? ? # 縱坐標(biāo) = 頻率/組距,我這里組距設(shè)置的是0.5,因此我又除以2,讓縱坐標(biāo)表示頻率。

? geom_density(size = 1.2,color = "skyblue")+? ?#設(shè)置顏色

? geom_histogram(color = "yellow",fill = "deeppink",breaks = seq(min,max,0.5),alpha = 0.5)+

? coord_cartesian(expand = F,xlim = c(min-0.2,max+0.2),ylim = c(0,max(text$prop)+0.02))+

? scale_y_continuous(breaks = seq(0,0.5,0.05))+

? scale_x_continuous(breaks = seq(min,max,1))+? ? #這兩個(gè)函數(shù)設(shè)置坐標(biāo)軸顯示多少刻度點(diǎn)

? labs(x = "",y = "Frequency")+

? geom_text(data = text,aes(x,y = prop+0.005,label = prop))+

? theme(panel.background = element_blank(),

? ? ? ? panel.grid.major.y = element_line(colour = "grey",linetype = 2),

? ? ? ? axis.line = element_line(colour = "black",size = rel(2),arrow = arrow(angle = 30,length = unit(0.1,"inches"))),? #為坐標(biāo)軸添加箭頭

? ? ? ? axis.title = element_text(size = rel(1.2)),

? ? ? ? axis.text.x = element_text(size = rel(1.5),hjust = 1),

? ? ? ? axis.text.y = element_text(hjust = 1,size = rel(1.5)),

? ? ? ? axis.ticks = element_line(size = rel(1.5)),

? ? ? ? plot.margin = margin(15,9,9,9))

最終圖片:


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容