结合了{ggplot2}和{ggiraph}能力的R包该怎么用?附超多代码~

{ggiraphExtra},包如其名,结合{ggplot2}{ggiraph}的作图能力为一体,只需要设置interactive = TRUE或者interactive = FALSE,就能随意切换普通作图和交互绘图,十分方便 [1]


具体来看看这个R包到底能做些什么?


安装和载入需要的R包:


# 安装并载入该R包
install.packages("ggiraphExtra")
library(ggiraphExtra)

# 下方为载入代码,需提前安装
library(ggplot2)

后续作图将会用到R和{ggplot2}中的数据集iris,mtcars和diamonds。


精简作图的三个数据,将其分别存入新创建的数据集中:


mydata <- iris[1:100,]
mydata$Species <- factor(mydata$Species, levels = c("setosa", "versicolor"))
str(mydata)


mydata2 <- mtcars[, c(1, 9)]
mydata2$names <- row.names(mydata2)
str(mydata2)


mydata3 <- diamonds[, c(2, 3, 7)]
str(mydata3)


数据和R包准备完毕,开始作图!


首先,画个散点图,并拟合回归直线:


ggPoints(aes(x = Sepal.Length, y = Sepal.Width, colour = Species),
         data = mydata,
         method = "lm",
         interactive =
FALSE# 默认为FALSE


如果代码改成interactive = TRUE后图片将转换为交互图,感兴趣的读者可以在自己的R上试试~


再试试画个logistic回归的图:


ggPoints(data = mydata2, aes(x = mpg, y = am),
         method = "glm",
         interactive =
FALSE)


如果是先拟合好了一个回归模型,想直接作图:


lm_model <- lm(Sepal.Width ~ Sepal.Length*Species, data = mydata)

# 作图
ggEffect(lm_model)


还能一行代码搞定雷达图:


ggRadar(mydata, aes(colour = Species))


也能作出水平箱形图并加上均数的点:


ggBoxplot(data = mydata, aes(colour = Species, x = c(Sepal.Length, Sepal.Width)),
          horizontal= TRUE)


假设想给箱形图加上点:


ggDot(mydata, aes(x = Species, y = Sepal.Length, fill = Species),
      boxfill = "white",
      position = 0.15,
      binwidth = 0.05,
      boxwidth = 0.2)


还可以作Spine plots:


ggSpine(data = mydata, aes(x = Sepal.Length, fill = Species),
        palette = "Purples",
        labelsize = 3)


上图类似于之前介绍过的马赛克图。


画出常见的条形图:


ggBar(mydata, aes(x = Sepal.Length, fill = Species),
      stat = "count",
      palette = "Oranges",
      color = "black", size = 0.2) +
  theme_bw()


加上errorbar(误差棒)的条形图:


ggErrorBar(data = mydata, aes(x = Species, y = Sepal.Width, fill = Species),
           mode = 2,
# 误差棒的类型
           errorbar = "sd") +
# sd 或 se
  scale_fill_manual(values = c("firebrick", "steelblue")) +
  theme_bw()


与柱状图类似的克利夫兰图(cleveland plot)


ggCLE(data = mydata2, aes(x = mpg, y = names, colour = am, facet = am)) +
  scale_colour_manual(values = c("firebrick""steelblue"))


再来,画一个好看的玫瑰花图:


ggRose(mydata3, aes(x = cut, y = price, fill = color),
       palette = "Purples",
       size = 0.1) +
  theme_bw()


如果是一个分类变量(cut),可以画一个pie图:


ggPie(mydata3, aes(x = cut))


如果有两个分类变量(am和names),可以作一个甜甜圈图:


ggPieDonut(mydata2, aes(pies = am, donuts = names))


最后,画一个相关图:

ggCor(mydata,
      what = 1,
      colors = c("firebrick", "grey70", "steelblue"),
      label = 1,
      mode = 2,
      xangle = 30)


好啦,今天的内容就到这里。如果有帮助,记得分享给需要的人

参考文献

[1]. https://github.com/cardiomoon/ggiraphExtra

公众号的线上课程
1. 《R语言和统计新手课程》
2. 《回归:从入门到进阶》

公众号核心成员的成果发表
《SCI医学1区影响因子8.8分论文》

▌本文由R语言和统计首发
▌课程相关咨询可添加R师妹微信: kefu_rstats
▌编辑:June
▌邮箱:contact@rstats.cn
▌网站:www.rstats.cn
我们致力于让R语言和统计变得简单!







2023-04-20 09:52
首页    公众号    结合了{ggplot2}和{ggiraph}能力的R包该怎么用?附超多代码~