更改ggplot2绘图参数的简便方法
in 生信工具 with 0 comment

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

in 生信工具 with 0 comment

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

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"))

注:

修改图例的位置和外观

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 参数可以用于修改分组变量的颜色。可选值包括:

# 使用自定义调色板
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