ggfan 优雅的可视化你的置信区间
测试开头
















测试结尾
凡间烟火味,最抚凡人心

1引言
今天分享的这个 R 包可以比较 自由的可视化我们的数据的置信区间, ggfan
, 让你的图更加优雅!

githup 地址:
https://github.com/jasonhilton/ggfan
参考文档地址:
https://github.com/jasonhilton/ggfan/blob/master/vignettes/geom_fan.md

2安装
install.packages("ggfan")
# or
devtools::install_github("jasonhilton/ggfan")
3使用
加载 R 包
library(ggplot2)
library(magrittr)
library(tidyr)
library(dplyr)
library(ggfan)
构造测试数据
# generate mean and variance for sequence of samples over time
N_time <- 50
N_sims <- 1000
time <- 1:N_time
mu <- time**2 * 0.03 + time * 0.3
sds <- exp(time**2 * -0.001 + time * 0.1)
# simulate 1000 samples from each time point
fake_data <- sapply(time, function(i) rnorm(N_sims, mu[i], sds[i]))
# gather into a long-form, tidy dataset
fake_df <- data.frame(x=time, t(fake_data)) %>% gather(key=Sim, value=y, -x)
head(fake_df)
## x Sim y
## 1 1 X1 1.6572459
## 2 2 X1 0.8267447
## 3 3 X1 -0.8102278
## 4 4 X1 3.0413644
## 5 5 X1 6.3048493
## 6 6 X1 3.9750555
基本绘图
p <- ggplot(fake_df, aes(x=x,y=y)) +
geom_interval()
print(p)

映射区间并更改
p + geom_interval(aes(colour=..Interval..), intervals=c(0,0.5,0.9,0.99))

使用 geom_fan 表现出渐变效果
p <- ggplot(fake_df, aes(x=x,y=y)) +
geom_fan()
print(p)

4叠加上线图层
ggplot(fake_df, aes(x=x, y= y)) +
geom_fan() +
geom_interval() +
scale_linetype_manual(values=c("solid", "dashed", "dotted"))

5修改区间对应填充范围
quants <- c(2.5,10,25,50,75,90,97.5)
q_df <- as.data.frame(sapply(quants*0.01, qnorm, mu, sds))
names(q_df) <- gsub("^","q", quants)
q_df <- cbind(q_df,time)
q_df <-gather(q_df,key=quantile, value=value, -time)
p + geom_line(data=q_df, mapping=aes(x=time,y=value, group=quantile, linetype=quantile))

6美化
更改颜色:
ggplot(fake_df, aes(x=x,y=y)) +
geom_fan() +
theme_bw() +
scale_fill_distiller(palette="Spectral")

ggplot(fake_df, aes(x=x,y=y)) +
geom_fan() +
theme_bw() +
scale_fill_gradient(low="red", high="pink")

匹配区间:
ggplot(fake_df, aes(x=x, y=y)) +
geom_fan(intervals=c(50,80,95)/100) +
theme_bw() +
geom_line(data=q_df, mapping=aes(x=time,y=value, group=quantile, linetype=quantile))

分面和分组
fake_df_sex <- fake_df %>% mutate(y=-fake_df$y, Sex="Male")
fake_df_sex <- rbind(fake_df %>% mutate(Sex="Female"), fake_df_sex)
ggplot(fake_df_sex, aes(x=x,y=y)) +
geom_fan() +
theme_bw() +
scale_fill_gradientn(colours = terrain.colors(10)) +
facet_wrap(~Sex)

线分组:
p <- ggplot(fake_df_sex, aes(x=x, y=y,group=Sex,colour=Sex)) +
geom_interval() +
theme_bw()
print(p)

渐变分组:
p <- ggplot(fake_df_sex, aes(x=x, y=y,group=Sex)) +
geom_fan() +
theme_bw()
print(p)

7结尾
感兴趣的小伙伴们可以尝试一下。

欢迎加入生信交流群。加我微信我也拉你进 微信群聊 老俊俊生信交流群
哦,数据代码已上传至QQ群,欢迎加入下载。
群二维码:

老俊俊微信:
知识星球:
所以今天你学习了吗?
欢迎小伙伴留言评论!
今天的分享就到这里了,敬请期待下一篇!
最后欢迎大家分享转发,您的点赞是对我的鼓励和肯定!
如果觉得对您帮助很大,赏杯快乐水喝喝吧!
往期回顾
◀...
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!