ggplot2繪制棒棒糖圖——Lollipop chart

棒棒糖圖,就是長得像棒棒糖一樣的圖(一句廢話),和柱形圖,散點(diǎn)圖想要表達(dá)的意思是一致的,不過展示會(huì)更加好看一點(diǎn),是點(diǎn)圖geom_point()和堆疊圖geom_segment()的組合,今天這篇文章主要介紹幾種常見的棒棒圖表現(xiàn)形式,以及一些美化。

0.準(zhǔn)備工作

#讀取數(shù)據(jù)
> data<-read.table("data.txt",header = T)
> head(data)
   ID NUM
1 A_1   64
2 A_2   59
3 A_3   53
4 A_4   58
5 A_5   58
#調(diào)用R包
> library(tidyverse) #是一個(gè)包含了dplyr、ggplot2、tibble等包的集合包

1.基礎(chǔ)繪圖

> ggplot(data, aes(x=ID, y=NUM)) +
+     geom_segment( aes(x=ID, xend=ID, y=0, yend=NUM)) +
+     geom_point( size=5, color="red", fill=alpha("orange", 0.3), alpha=0.7, shape=21, stroke=2)
  • size:點(diǎn)的大小
  • color:點(diǎn)外圈的顏色
  • fill:點(diǎn)填充的參數(shù)
  • alpha:透明度 [0,1]
  • shape:點(diǎn)的形狀
  • stroke:點(diǎn)描邊的大小
Fig.1

2.改變線的類型

> ggplot(data, aes(x=ID, y=NUM)) +
+     geom_segment( aes(x=ID, xend=ID, y=0, yend=NUM),linetype="dotdash" ) +
+     geom_point( size=5, color="red", fill=alpha("orange", 0.3), alpha=0.7, shape=21, stroke=2) 
  • 在geom_segment()中加入linetype改變線的類型。


    Fig.2

3.美化,改變主題

加入theme()函數(shù)對(duì)fig.1進(jìn)行進(jìn)一步優(yōu)化,去掉背景顏色,增加Y軸標(biāo)題等。

> ggplot(data, aes(x=ID, y=NUM)) 
+     geom_segment( aes(x=ID, xend=ID, y=0, yend=NUM)) 
+     geom_point( size=5, color="red", fill=alpha("orange", 0.3), alpha=0.7, shape=21, stroke=2)
+     theme_light() 
+     theme(
+         panel.grid.major.x = element_blank(),
+         panel.border = element_blank(),
+         axis.ticks.x = element_blank()
+     ) 
+     xlab("") 
+     ylab("Value of Y")
Fig.3

4.水平棒棒糖圖

有時(shí)候我們需要水平的棒棒糖圖,來和其他的圖形組合,說明一些問題,只需要加入coord_flip()即可:

> ggplot(data, aes(x=ID, y=NUM)) 
+     geom_segment( aes(x=ID, xend=ID, y=0, yend=NUM)) 
+     geom_point( size=5, color="red", fill=alpha("orange", 0.3), alpha=0.7, shape=21, stroke=2)
+     theme_light() 
+     coord_flip() 
+     theme(
+         panel.grid.major.x = element_blank(),
+         panel.border = element_blank(),
+         axis.ticks.x = element_blank()
+     ) 
+     xlab("") 
+     ylab("Value of Y")
Fig.4

5.調(diào)整坐標(biāo)順序

以上圖中,可以看到R會(huì)自動(dòng)對(duì)樣本進(jìn)行排序,在原文件中,樣本的排序順序?yàn)锳_1- A_100,但在繪圖時(shí),會(huì)變?yōu)锳1、A10、A100、A2。此時(shí)如果需要制定繪圖順序與文件中的順序一致,需要在繪圖前增加一步:

> data$ID=factor(data$ID,unique(data$ID))

重新繪圖:

> ggplot(data, aes(x=ID, y=NUM)) 
+     geom_segment( aes(x=ID, xend=ID, y=0, yend=NUM)) 
+     geom_point( size=5, color="red", fill=alpha("orange", 0.3), alpha=0.7, shape=21, stroke=2)+theme_light() 
+     coord_flip() 
+     theme(
+         panel.grid.major.x = element_blank(),
+         panel.border = element_blank(),
+         axis.ticks.x = element_blank()
+     ) 
+     xlab("") 
+     ylab("Value of Y")
Fig.5

這里看到Fig.5中的樣本數(shù)量就與數(shù)據(jù)文件中一致了。

引用轉(zhuǎn)載請(qǐng)注明出處,如有錯(cuò)誤敬請(qǐng)指出。

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