ggplot2:堆積柱狀圖與餅圖間不得不說的故事

學(xué)會(huì)用ggplot2畫堆積圖就等于學(xué)會(huì)畫餅圖,這樣一石二鳥的干貨汽馋,還不繼續(xù)往下看嗎侮东?


堆積柱狀圖(或百分比堆積圖)與餅圖都是我們常用的直觀描述數(shù)據(jù)占比的手段,它們的區(qū)別主要就在于一個(gè)是用柱子的高低來展示占比豹芯,另一個(gè)是扇形的大小悄雅,其實(shí)它們本質(zhì)相同,只是坐標(biāo)軸的類型不同铁蹈。那么在繪圖的時(shí)候其實(shí)也是互通的宽闲,通過繪制堆積柱狀圖后將坐標(biāo)軸稍微替換一下,就能夠?qū)瀳D繪制出來握牧。下面詳細(xì)介紹繪制過程容诬。

本文梗概

  1. 堆積柱狀圖的畫法
  2. 如何將堆積圖“一鍵”轉(zhuǎn)換為餅圖

預(yù)處理 - 創(chuàng)建需要輸入的數(shù)據(jù)框

cb = data.frame(tissue = rep("cord blood", 8), 
                celltype = c('T',   'NK',   'B',    
                             'eos_mon_neu', 'NRBC', 'platelet', 'stem', 'DC'),
                count = c(179937,   15398,  46749,  53229,
                          4873, 4613,   1807,   185))

這個(gè)數(shù)據(jù)框的第一列表示組織類型,第二列celltype是細(xì)胞類型沿腰,第三列count表示該細(xì)胞類型的數(shù)目有多少個(gè)览徒。

1. 畫堆積柱狀圖

這里注意使用geom_bar(),position = 'stack'矫俺,就會(huì)出現(xiàn)堆積圖吱殉,柱子的高度指的是比例掸冤。另外一種柱狀圖使用的是geom_col(),但它的高度指的是原始數(shù)據(jù)的大小友雳,這點(diǎn)需要加以區(qū)分稿湿。

library(ggplot2)
p = ggplot(cb,aes(x=tissue,y=count,fill=celltype)) +
  geom_bar(stat = 'identity', width = 0.5, position = 'stack')
p

現(xiàn)在就畫好了最基礎(chǔ)的堆積柱狀圖。我們來美化一下它押赊。

改變配色:

p = p + scale_fill_brewer(palette ="Set3",direction = 1) 

2. 轉(zhuǎn)換成餅圖

我們需要做的饺藤,就是將上面的堆積柱狀圖的坐標(biāo)軸改成極坐標(biāo)軸:

p = p + coord_polar(theta = 'y', direction = 1)
p

這時(shí)候餅圖就畫出來了。但是這樣的圖是不能用的流礁,畢竟橫縱坐標(biāo)的“count”和“tissue”都不再適用了涕俗,而外圈那些數(shù)字也需要去除。

去除橫縱坐標(biāo)標(biāo)題“tissue”神帅,“count”:

p = p + labs(x="",y="") 
p

去除數(shù)字和“cord blood”字樣:

p = p +  theme(axis.text = element_blank()) 
p

去除左上角那個(gè)辣眼睛的小點(diǎn)(其實(shí)是刻度):

p = p + theme(axis.ticks = element_blank())
p

將背景設(shè)置為透明:

p = p + theme(panel.background = element_rect(I(0)))
p

下面我們將這個(gè)餅圖上面用geom_text注釋上每部分的占比再姑,x = 1.1可以調(diào)整注釋距離圓心的位置,size調(diào)整字體大姓矣:

label <- paste0('(', round(cb$count/sum(cb$count) * 100, 1), '%)')
p = p+ geom_text(aes(x=1.1,label=as.character(label)),
            position = position_stack(reverse =F,vjust=0.5),size=3)
p
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末元镀,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子霎桅,更是在濱河造成了極大的恐慌栖疑,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滔驶,死亡現(xiàn)場(chǎng)離奇詭異遇革,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)揭糕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門萝快,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人插佛,你說我怎么就攤上這事杠巡。” “怎么了雇寇?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵氢拥,是天一觀的道長。 經(jīng)常有香客問我锨侯,道長嫩海,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任囚痴,我火速辦了婚禮叁怪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘深滚。我一直安慰自己奕谭,他們只是感情好涣觉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著血柳,像睡著了一般官册。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上难捌,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天膝宁,我揣著相機(jī)與錄音,去河邊找鬼根吁。 笑死员淫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的击敌。 我是一名探鬼主播介返,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼沃斤!你這毒婦竟也來了映皆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤轰枝,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后组去,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鞍陨,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年从隆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了诚撵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡键闺,死狀恐怖寿烟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情辛燥,我是刑警寧澤筛武,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站挎塌,受9級(jí)特大地震影響徘六,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜榴都,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一待锈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧嘴高,春花似錦竿音、人聲如沸和屎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽柴信。三九已至,卻和暖如春快鱼,著一層夾襖步出監(jiān)牢的瞬間颠印,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來泰國打工抹竹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留线罕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓窃判,卻偏偏與公主長得像钞楼,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子袄琳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353