ggplot2繪圖系統(tǒng)——擴展包ggrepel爽冕、ggsci、gganimate披蕉、ggpubr等
部分?jǐn)U展包可在CRAN直接下載颈畸,有些需借助devtools包從Github下載。
1. ggrepel包
用來在圖上添加文字和標(biāo)簽没讲,相比geom_text和geom_label函數(shù)眯娱,能將重疊的標(biāo)簽分開,并添加指示短橫線食零。
library(ggrepel)
ggplot(mtcars,aes(wt,mpg))+geom_point(color='red')+
geom_text_repel(aes(label=rownames(mtcars)),
segment.color = 'blue')+
theme_classic(base_size = 16)
image.png
2. ggsci包
肖楠作品困乒,針對科研人員的包,滿足不同雜志風(fēng)格的配色贰谣,包括十幾種配色方案娜搂。
基本配色函數(shù):
image.png
Lancet配色示例。
library(ggsci)
p1 <- ggplot(subset(diamonds,carat>=2.2),aes(x=table,y=price,color=cut))+
geom_point(alpha=0.7)+
geom_smooth(method = 'loess',alpha=0.05,size=1,span=1)+
theme_bw()
a <- p1+scale_color_lancet()
p2 <- ggplot(subset(diamonds,carat>2.2&depth>55&depth<70),
aes(x=depth,fill=cut))+
geom_histogram(color='black',binwidth = 1,position = 'dodge')+
theme_bw()
b <- p2+scale_fill_lancet()
grid.arrange(a,b,ncol=2)
image.png
JCO配色風(fēng)格示例吱抚。
c <- p1+scale_color_jco()
d <- p2+scale_fill_jco()
grid.arrange(c,d,ncol=2)
image.png
3. gganimate包
繪制動態(tài)圖(將靜態(tài)的png百宇、jpeg圖片轉(zhuǎn)化成動態(tài)的gif文件)。
使用gganimate前秘豹,需在本機上先安裝ImageMagick軟件(專用于圖片編輯携御、合成、轉(zhuǎn)換及其他處理的軟件)既绕。
library(gganimate)
date <- as.character(economics$date)
economics$year <- substr(date,1,4) #提取年份
p <- ggplot(economics,aes(date,uempmed,size=unempoly,
frame=year))+#必須參數(shù)啄刹,展示每一幀名稱
geom_point()
gganimate(p)
aq <- airquality
aq$date <- as.Date(paste(1973,aq$Month,aq$Day,sep = '-'))
p2 <- ggplot(aq,aes(date,Temp,frame=Month,
cumulative=TRUE))+ #疊加顯示,而非單獨顯示每一幀
geom_line()
gganimate(p2,title_frame=FALSE)
4. ggpubr包
快速生成論文發(fā)表級的統(tǒng)計圖形凄贩。
兩兩比較盒形圖
library(ggpubr)
data('ToothGrowth')
df <- ToothGrowth
p <- ggboxplot(df,
x='dose',
y='len',
color = 'dose',#顏色映射變量
palette = c('#00AFBB','#E7B800','#FC4E07'), #盒形顏色取值
add = 'jitter', #點擾動
shape='dose' #擾動點形狀
)
p
#代碼風(fēng)格更偏向于基礎(chǔ)包誓军,注意傳入的變量都是字符串形式
#######統(tǒng)計學(xué)差異繪圖
#定義哪些組兩兩比較
my_comparisons <- list(c('0.5','1'),c('1','2'),c('0.5','2'))
#添加組間比較p值
b <- p+stat_compare_means(comparisons = my_comparisons)+
stat_compare_means(label.y = 50) #p值位置
grid.arrange(p,b,ncol=2)
image.png
小提琴圖
ggviolin(df,
x='dose',
y='len',
fill = 'dose',
palette = c('#00AFBB','#E7B800','#FC4E07'),
add = 'boxplot', #添加盒形圖
add.params = list(fill='white'))+
#定義后添加圖形的屬性,這里定義盒形圖填充色
stat_compare_means(comparisons = my_comparisons,
label = 'p.signif') +#以顯著程度展示疲扎,而非p
stat_compare_means(label.y=50) #總體比較p值位置
image.png
條形圖和滑珠圖
滑珠圖是條形圖一種變形昵时。
示例比較。
mtcars$name <- rownames(mtcars)
mtcars$cyl <- as.factor(mtcars$cyl)
#條形圖
a <- ggbarplot(mtcars,x='name',y='mpg',
fill = 'cyl',
color='white',
palette = 'lancet', #配色風(fēng)格椒丧,JCO
sort.val = 'desc', #對y變量降序
sort.by.groups = FALSE, #各組不分開排列
x.text.angle=90
)
#滑珠圖
b <- ggdotchart(mtcars,x='name',y='mpg',
color = 'cyl',
palette = 'jco',
sorting = 'ascending', #升序排列
add = 'segments', #添加線段壹甥,使之成為滑珠圖
ggtheme = theme_pubr() #圖形整體風(fēng)格
)
grid.arrange(a,b,ncol=2)
image.png
改善后的滑珠圖。
ggdotchart(mtcars,x='name',y='mpg',
color = 'cyl',
palette = c('#00AFBB','#E7B800','#FC4E07'),
sorting = 'descending',
add = 'segments',
rotate = TRUE,
group = 'cyl', #各亞組分開
dot.size = 6, #散點大小
label = round(mtcars$mpg),#mpg值作為散點標(biāo)簽
font.label = list(color='white',size=9,vjust=0.5),
#定義散點其他屬性
ggtheme = theme_pubr()
)
image.png
5. 其他擴展包
- ggfortify包
- ggforce包
對ggplot2幾何對象進行了擴展壶熏,加入arcs句柠、curves等幾何對象,更方便繪制餅圖、弧形等溯职。 - ggradar包
雷達圖/蜘蛛圖管怠。 - ggnetwork包
社交網(wǎng)絡(luò)數(shù)據(jù)可視化。