可視化:環(huán)狀條形圖

前言

??條形圖算是很常見的數(shù)據(jù)展示圖形之一。今天我們就來說說條形圖相關(guān)的事情——繪制環(huán)狀條形圖。顧名思義,環(huán)狀條形圖就是將正常排列的條形圖繪制成圓形排列,改變一下可視化的呈現(xiàn)方式。

繪圖

??廢話不多說了,下面直接展示繪制過程,代碼如下:

library(ggplot2)

# 準(zhǔn)備數(shù)據(jù)
set.seed(21)
data <- data.frame(id=seq(1,60),
                   individual=paste( "Mister ", seq(1,60), sep=""),
                   value=sample( seq(10,100), 60, replace=T))

data$angle <- 90 - 360 * (data$id - 0.5) / nrow(data)

ggplot(data,aes(x=as.factor(id),y=value))+
       geom_bar(stat="identity",fill="skyblue")+
       geom_text(aes(x=id,y=value+10,label=individual,hjust=0),color="black",fontface="bold",alpha=0.7,size=2.5,angle=data$angle)+
       theme_minimal()+
       theme(axis.text=element_blank(),axis.title=element_blank(),panel.grid=element_blank())+
       coord_polar(start=0)+
       ylim(-60,120)

結(jié)果如下:

??可以看到環(huán)狀條形圖繪制起來還是挺簡(jiǎn)單的。整個(gè)繪圖過程最需要注意的地方就是添加外圍的標(biāo)簽,讓添加的標(biāo)簽跟柱子保持在一條線上。這就要根據(jù)每一個(gè)柱子極化后的旋轉(zhuǎn)角度來調(diào)整標(biāo)簽的旋轉(zhuǎn)角度。默認(rèn)情況下,標(biāo)簽文字都是水平放置,旋轉(zhuǎn)時(shí)如果給定正數(shù)角度則從坐標(biāo)0點(diǎn)逆時(shí)針旋轉(zhuǎn),負(fù)數(shù)則順時(shí)針旋轉(zhuǎn)。在極坐標(biāo)系里面,極化后的柱子從坐標(biāo)0點(diǎn)順時(shí)針旋轉(zhuǎn)排列。對(duì)于添加標(biāo)簽的細(xì)節(jié),這里拿下圖中的Mister1條目來說明一下,該條目的柱子在極坐標(biāo)系的偏移角度為6(360/60),而標(biāo)簽需要旋轉(zhuǎn)的角度就是84(90-6)。

??大部分人應(yīng)該會(huì)覺得上面第一張圖左半邊的標(biāo)簽都是底朝上,不符合我們的閱讀習(xí)慣,看起來很別扭,那該如何調(diào)整呢?看下面的代碼:

# 準(zhǔn)備數(shù)據(jù)
set.seed(21)
data <- data.frame(id=seq(1,60),
                   individual=paste( "Mister ", seq(1,60), sep=""),
                   value=sample( seq(10,100), 60, replace=T))

angle <- 90 - 360 * (data$id - 0.5) / nrow(data)
data$hjust <- ifelse(angle < -90, 1, 0)
data$angle <- ifelse(angle < -90, angle+180, angle)

ggplot(data,aes(x=as.factor(id),y=value))+
       geom_bar(stat="identity",fill="skyblue")+
       geom_text(aes(x=id,y=value+10,label=individual,hjust=hjust),color="black",fontface="bold",alpha=0.7,size=2.5,angle=data$angle)+
       theme_minimal()+
       theme(axis.text=element_blank(),axis.title=element_blank(),panel.grid=element_blank())+
       coord_polar(start=0)+
       ylim(-60,120)

結(jié)果如下:

結(jié)束語

??今天說的比較基礎(chǔ)的環(huán)狀條形圖,后面再介紹一下復(fù)雜一些的環(huán)狀條形圖,如繪制分組堆疊的環(huán)狀條形圖。哦了,今天到此結(jié)束~~~

?著作權(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)容