R語言的ggplot2繪制多個(gè)分組簇狀柱狀圖

R語言的ggplot2繪制多個(gè)分組簇狀柱狀圖

今天要分享的是ggplot2去繪制多個(gè)分組簇狀柱狀圖,話不多說,現(xiàn)在開始吧:

老規(guī)矩,還是先看數(shù)據(jù)和最終的效果圖,進(jìn)行解釋后,再說明如何繪制


可以明顯看到,圖代表的意思是不同年齡組、性別的高血壓和糖尿病的患病率

年齡是x軸的分組,性別是堆積塊的分組,疾病是分頁的分組(也就是高血壓一張圖,糖尿病一張圖),圖中的數(shù)據(jù)是患病率。

所以,畫圖的前提是先把數(shù)據(jù)整理成4列,然后自己分清每一列變量代表哪里,最好,自己手畫一下大概的情況,接著再進(jìn)行畫圖。

?

下面是具體的操作流程:

注意:R語言里面 # 代表的是備注

我出現(xiàn)兩個(gè) ## 的備注就是你需要更改的部分

.libPaths()

setwd("F:/02學(xué)習(xí)/代碼/02R代碼/數(shù)據(jù)")#設(shè)置工作空間

getwd()#加載工作空間

?

#加載包

library(ggplot2)

library(tidyr) #pivot_longer()

library(dplyr) #mutate()、case_when()、管道符

library(tibble) #rownames_to_column()

library(ggrepel)#含geom_text_repel,作用不讓標(biāo)簽重疊

#導(dǎo)入數(shù)據(jù)

data1<-read.csv("F:/02學(xué)習(xí)/代碼/02R代碼/數(shù)據(jù)/分組柱狀圖.csv",##這里需要更改工作路徑

??????????????? as.is = TRUE,header = T,sep =",", fileEncoding='utf-8')

#先看下數(shù)據(jù)

data1

#采用mutate()設(shè)計(jì)分組變量里面數(shù)據(jù)的順序

data1 <- rbind(data1)%>%#必須寫上這個(gè)行行合并的函數(shù)

?##這里我列出我的三個(gè)分組變量里面數(shù)據(jù)的順序

?##比如下面的年齡,變量名是”年齡“,希望的順序是"60歲以下","60歲以上"

?##然后粘貼到函數(shù)mutate,如下

?##年齡:60歲以下/60歲以上

?mutate(年齡 = factor(年齡, levels = c("60歲以下",

?????????????????????????????????? "60歲以上"

?)))%>%

?##同樣上面的操作

?##性別:男/

?mutate(性別 = factor(性別, levels = c(

???"男","女"

?))) %>%

?##同樣上面的操作

?##疾?。焊哐獕?糖尿病

?mutate(疾病 = factor(疾病, levels = c(

???"高血壓",?? "糖尿病"

?)))

?

?

#然后畫柱狀堆積圖,采用geom_bar組件

##x=代表x軸的分組,這里我選年齡

##y=代表數(shù)據(jù)那一列,這里是? 患病率那一列

##fill= 代表每個(gè)圖里面的柱狀堆積塊的分組,這里我選? 性別,同時(shí)這個(gè)后面需要?jiǎng)?chuàng)建圖例

p1<-ggplot(data = data1, aes(x=年齡, y = 患病率, fill = 性別)) +#這里就是1張圖的工作

?geom_bar(stat="identity", color = "black", size =0.55, width = 0.7)+

?facet_wrap(~疾病)+ ##這里設(shè)置分頁,就是多張圖,這里的分組變量我選疾病

?##為不同類別設(shè)置顏色

?##下面這個(gè)是設(shè)置柱狀堆積塊,每一塊的顏色,因?yàn)榍懊媸怯玫男詣e

?##那么就需要定義 "男" 和 "女"的顏色

?scale_fill_manual(

???values = c("男" = "#bd2628",

?????????????? "女" = "#caeaf0"))

#查看

p1


#接著進(jìn)一步美化

p2<-p1+

?theme_bw()+ #移除灰色背景

?ylab("比例")+ #設(shè)置Y軸標(biāo)題

?scale_y_continuous(labels = seq(0, 100, 25)) + #設(shè)置Y軸標(biāo)簽

?guides(fill = guide_legend(keyheight = 1.75, #圖例高度

???????????????????????????? keywidth =0.5,? #圖例寬度

???????????????????????????? title ="Age", ##這里修改圖例標(biāo)題,前面選擇的是性別

???????????????????????????? label.theme =element_text(size=10)))+ #設(shè)置標(biāo)簽字體大小

?theme(

???axis.text.x = element_text(angle = 0, hjust = 0.5, vjust = 0.5,

?????????????????????????????? colour ="black", size = 8),

???#設(shè)置X軸標(biāo)簽字體角度、對(duì)齊方向、顏色大小

???axis.text.y = element_text(colour = "black", size = 11), #設(shè)置y軸標(biāo)簽字體顏色、大小

???axis.title.x = element_blank(), #移除x軸標(biāo)題

???strip.background = element_rect(fill = c("#e7e7e7")), #修改分頁背景

???strip.text.x = element_text(size = 13), #設(shè)置分頁標(biāo)簽字體大小

???panel.border = element_rect(linewidth = 1.1), #設(shè)置邊框粗細(xì)

???panel.grid = element_blank() #刪除背景網(wǎng)格

?)+

?##這里需要將? 患病率?數(shù)據(jù)加到圖上

?geom_text(aes(label=患病率),

???????????position=position_stack(vjust=0.5),hjust=0.5,

??????????? size=3)#增加數(shù)據(jù)到圖上

???????#position=position_stack()作用是將數(shù)據(jù)對(duì)應(yīng)到相應(yīng)的圖塊部分

#查看

p2

#保存圖片

ggsave(filename = "0-2.png",#命名

??????plot=p2,#哪張圖

??????path = "C:/Users/12974/Desktop/百度經(jīng)驗(yàn)/簡(jiǎn)書/R語言繪制多個(gè)分組簇狀柱狀圖",

??????#保存路徑

??????units="px",

??????width = 1200,#寬度

??????height = 600 #高度

??????)

評(píng)論區(qū)給出數(shù)據(jù)和R語言的代碼,這里的顏色全是黑色

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容