ggpmisc和gginnards两个包包含了ggplot2很多扩展的功能。
介绍其中几个实用函数。
代码语言:javascript复制#install.packages("gginnards")
#install.packages("ggpmisc")
library(gginnards)
library(ggpmisc)
stat_poly_eq
可以直接获得曲线拟合的方程,p值,决定系数(R^2), AIC和BIC等指标,不需要自己计算和标注了。不过只能做多项式拟合lm()的结果。
代码语言:javascript复制##例子
# generate artificial data
set.seed(4321)
x <- 1:100
y <- (x x^2 x^3) rnorm(length(x), mean = 0, sd = mean(x^3) / 4)
my.data <- data.frame(x = x, y = y,
group = c("A", "B"),
y2 = y * c(0.5,2),
w = sqrt(x))
# give a name to a formula
formula <- y ~ poly(x, 3, raw = TRUE)
# user specified label
ggplot(my.data, aes(x, y))
geom_point()
geom_smooth(method = "lm", formula = formula)
stat_poly_eq(aes(label = paste(stat(eq.label),
stat(adj.rr.label),
stat(p.value.label),
sep = "*", "*")),
formula = formula,
rr.digits = 3, coef.digits = 4,
parse = TRUE)
geom_linked_text
花式加标签
代码语言:javascript复制##例子
my.cars <- mtcars[c(TRUE, FALSE, FALSE, FALSE), ]
my.cars$name <- rownames(my.cars)
p <- ggplot(my.cars, aes(wt, mpg, label = name))
p
geom_point()
geom_linked_text(aes(colour = factor(cyl)),
hjust = -0.04, nudge_x = 0.12,
vjust = -0.2, nudge_y = 0.5,
size = 4,
check_overlap = TRUE, # avoid overlap
arrow = arrow(length = grid::unit(1.5, "mm")))
expand_limits(x = 6.2)
geom_table
插入表格
代码语言:javascript复制##例子
library(dplyr)
library(tibble)
mtcars %>%
group_by(cyl) %>%
summarize(wt = mean(wt), mpg = mean(mpg)) %>%
ungroup() %>%
mutate(wt = sprintf("%.2f", wt),
mpg = sprintf("%.1f", mpg)) -> tb
df <- tibble(x = 5.45, y = 34, tb = list(tb))
ggplot(mtcars, aes(wt, mpg, colour = factor(cyl)))
geom_point()
geom_table(data = df, aes(x = x, y = y, label = tb),
table.rownames = TRUE, table.theme = ttheme_gtstripes)
stat_fit_tb
对多种模型进行拟合并返回拟合结果; 对拟合结果做ANOVA
代码语言:javascript复制library(broom)
# data for examples
x <- c(44.4, 45.9, 41.9, 53.3, 44.7, 44.1, 50.7, 45.2, 60.1)
covariate <- sqrt(x) rnorm(9)
group <- factor(c(rep("A", 4), rep("B", 5)))
my.df <- data.frame(x, group, covariate)
# Linear regression fit summary, by default
ggplot(my.df, aes(covariate, x))
geom_point()
stat_fit_tb(digits = 2, p.digits = 4)
expand_limits(y = 70)
其他还有很多功能,自行探索吧~