更改ggplot2绘图参数的简便方法

更好的阅读体验>>

本文将介绍如何使用ggpubr包中的ggpar()函数简单轻松地更改ggplot2绘图参数。ggpar()可以更改的图形参数包括:

  • 主标题、轴标签和图例标题
  • 图例位置和外观
  • 颜色
  • 坐标轴范围
  • 坐标轴的转换:log, sqrt
  • 坐标轴刻度
  • 主题
  • 图形旋转

ggpubr包的安装可以参考这篇文章-->>ggpubr:快速绘制用于发表的图形

绘制基本图形

# 绘制基本图形
p <- ggboxplot(ToothGrowth, x = "dose", y = "len",
               color = "dose")
p
# 添加网格线
p + grids(linetype = "dashed")

# 添加边框线
p + border("black")
  
# 修改背景色
p + bgcolor("#BFD5E3") +
  border("#BFD5E3") 

更改标题和轴标签

修改图形标题和标签:

p2 <- ggpar(p, 
            title = "Box Plot created with ggpubr",
            subtitle = "Length by dose",
            caption = "Source: ggpubr",
            xlab ="Dose (mg)", 
            ylab = "Teeth length",
            legend.title = "Dose (mg)")
p2

使用ggpar()更改图形标题和标签的字体和外观:

ggpar(p2, 
      font.title = c(14, "bold.italic", "red"),
      font.subtitle = c(10,  "orange"),
      font.caption = c(10,  "orange"),
      font.x = c(14,  "blue"),
      font.y = c(14,  "#993333")
      )

或者使用font()函数,也是相同的效果:

p2 +
 font("title", size = 14, color = "red", face = "bold.italic")+
 font("subtitle", size = 10, color = "orange")+
 font("caption", size = 10, color = "orange")+
 font("xlab", size = 12, color = "blue")+
 font("ylab", size = 12, color = "#993333")

ggpar()函数也可以同时修改标题和标签的文本和外观:

ggpar(p, title = "Plot of length \n by dose",
      xlab ="Dose (mg)", ylab = "Teeth length",
      legend.title = "Dose (mg)",
      font.title = c(14,"bold.italic", "red"),
      font.x = c(14, "bold", "#2E9FDF"),
      font.y = c(14, "bold", "#E7B800"))

注:

  • font.title, font.subtitle, font.caption, font.x, font.y均是长度为3的向量,包括字体大小、样式(例如:“plain”, “bold”, “italic”, “bold.italic”)和颜色。

修改图例的位置和外观

ggpar(p,
      legend = "right", legend.title = "Dose (mg)") + 
  font("legend.title", color = "blue", face = "bold")+ 
  font("legend.text", color = "red")


legend参数是指定图例位置的字符型向量,可选值包括c(“top”, “bottom”, “left”, “right”, “none”)。如果不想显示图例,可以设置legend = “none”。图例的位置也可由坐标位置来c(x, y)指定。

修改调色板

分组颜色

ggpubr()函数中的palette 参数可以用于修改分组变量的颜色。可选值包括:

  • 自定义调色板。例如:c(“blue”, “red”)c(“#00AFBB”, “#E7B800”)
  • 灰色调色板grey
  • brewer 调色板,如“RdBu”, “Blues”
  • ggsci包中的科学期刊调色板,如“npg”, “aaas”, “lancet”, “jco”, “ucscgb”, “uchicago”, “simpsons”,“rickandmorty”
# 使用自定义调色板
ggpar(p, palette = c("#00AFBB", "#E7B800", "#FC4E07"))
# 使用brewer 调色板
ggpar(p, palette = "Dark2" )
# 使用灰色调色板
ggpar(p, palette = "grey")
# 使用ggsci包中的科学期刊调色板
ggpar(p, palette = "npg") 





或者也可以使用color_palette()fill_palette()函数:

p + color_palette("jco")
p + color_palette(c("#00AFBB", "#E7B800", "#FC4E07"))

渐变色

使用gradient_color()gradient_fill()函数可以修改渐变色:

p3 <- ggscatter(mtcars, x = "wt", y = "mpg", color = "mpg",
                size = 2)
# 修改渐变色
# 单色渐变
p3 + gradient_color("red")
# 双色渐变
p3 + gradient_color(c("blue",  "red"))
# 三色渐变
p3 + gradient_color(c("blue", "white", "red"))
# 使用RColorBrewer 调色板
p3 + gradient_color("RdYlBu")





相同的语法也适用于gradient_fill()函数:

p4 <- ggscatter(mtcars, x = "wt", y = "mpg", fill = "mpg",
                size = 4, shape = 21)
p4 + gradient_fill(c("blue", "white", "red"))

更改坐标轴范围和比例

# 修改y轴范围
ggpar(p, ylim = c(0, 50))
# 将y轴比例改为log2
ggpar(p, yscale = "log2")
# 坐标轴比例格式化
ggpar(p, yscale = "log2", format.scale = TRUE)




也可以使用xscale()yscale()函数达到同样的效果:

p + yscale("log2", .format = TRUE)

自定义坐标轴文本和标签

# 修改坐标轴文本字体并旋转45度
p + 
  font("xy.text", size = 12, color = "blue", face = "bold") +
  rotate_x_text(45)+       
  rotate_y_text(45)
# 移除坐标轴刻度和文本
p + rremove("ticks")+
  rremove("axis.text")

图形旋转

# 水平的箱线图
p + rotate()

修改主题

ggpubr包中的默认主题为theme_pubr(),ggtheme 参数可以修改任何ggpubr绘制的图形,可选的主题有:theme_gray(), theme_bw(), theme_minimal(), theme_classic(), theme_void(), 等。

# 灰色主题
p + theme_gray()
# 黑白主题
p + theme_bw()

# 亮色主题
p + theme_light()
p + theme_minimal()
p + theme_void()


移除ggplot元素

rremove()函数可以用来移除特定的元素。

p <- ggboxplot(ToothGrowth, x = "dose", y = "len",
  ggtheme = theme_gray())
p
# 移除所有网格线
p + rremove("grid")
# 仅移除x轴网格线
p + rremove("x.grid")


参考

ggplot2 - Easy Way to Change Graphical Parameters

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

推荐阅读更多精彩内容

  • 简介 越学习包ggpubr越感觉其功能强大,本文主要讲解一下如何修改图形参数,我们知道ggplot2有着十分强大的...
    taoyan阅读 14,459评论 3 41
  • 这篇文章可以让你学到什么? 可以让你把这样的图: 通过设置各种参数修改为这样自定义的图: 一、 本文使用的数据 我...
    七七师姐阅读 20,920评论 1 32
  • 20171122(从有道迁移) 图形初阶 图形参数图形参数的选项来自定义一幅图形的多个特征(字体、颜色、坐标轴、标...
    KrisKC阅读 401评论 0 0
  • 今天电脑阅卷,早上大雨,匆忙的赶到阅卷点。昨晚上说有可能停电,要手机上阅卷,还吓了一跳,结果今天大雨顺延了停电,还...
    箜溪晓阅读 372评论 0 2
  • 麦田轩阅读 81评论 0 0