结合了{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