R语言与医学统计图形-【28】ggplot2扩展包ggrepel、ggsci、gganimate、ggpubr

ggplot2绘图系统——扩展包ggrepel、ggsci、gganimate、ggpubr等

部分扩展包可在CRAN直接下载,有些需借助devtools包从Github下载。

1. ggrepel包

用来在图上添加文字和标签,相比geom_text和geom_label函数,能将重叠的标签分开,并添加指示短横线。

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包

肖楠作品,针对科研人员的包,满足不同杂志风格的配色,包括十几种配色方案。

基本配色函数:


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配色风格示例。

c <- p1+scale_color_jco()
d <- p2+scale_fill_jco()
grid.arrange(c,d,ncol=2)
image.png

3. gganimate包

绘制动态图(将静态的png、jpeg图片转化成动态的gif文件)。

使用gganimate前,需在本机上先安装ImageMagick软件(专用于图片编辑、合成、转换及其他处理的软件)。

library(gganimate)
date <- as.character(economics$date)
economics$year <- substr(date,1,4) #提取年份
p <- ggplot(economics,aes(date,uempmed,size=unempoly,
                          frame=year))+#必须参数,展示每一帧名称
  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包

快速生成论文发表级的统计图形。

两两比较盒形图

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
#代码风格更偏向于基础包,注意传入的变量都是字符串形式


#######统计学差异绘图

#定义哪些组两两比较
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', #配色风格,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() #图形整体风格
                )
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值作为散点标签
           font.label = list(color='white',size=9,vjust=0.5),
           #定义散点其他属性
           ggtheme = theme_pubr() 
)
image.png

5. 其他扩展包

  • ggfortify包
  • ggforce包
    对ggplot2几何对象进行了扩展,加入arcs、curves等几何对象,更方便绘制饼图、弧形等。
  • ggradar包
    雷达图/蜘蛛图。
  • ggnetwork包
    社交网络数据可视化。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354