其他
跟着PNAS学绘图-ggplot2绘制散点图添加渐变拟合曲线
❝偶然间看到PNAS上的一幅散点图,初看十分惊艳,试着复现了一下。下面是图片和代码供大家参考;本文由RGzxs投稿,小编进行了简单的排版
❞
PNAS文章链接:https://www.pnas.org/content/117/21/11551/tab-figures-data
图里面的拟合曲线颜色为渐变色
加载R包
library(tidyverse)
library(ggpmisc)
创建数据集
df<-data.frame(x = c(1:100))
df$y <- 2 + 3 * df$x + rnorm(100, sd = 40)
ggplot2基本的散点图并添加拟合曲线
ggplot(data = df, aes(x = x, y = y)) +
geom_smooth(method = "lm", se=T,
color="black", formula = y ~ x) +
geom_point()
将拟合曲线设置为渐变
1.添加一行预测值
df$predict<-predict(lm(y~x, data = df))
设置geom_line()
ggplot(data = df, aes(x = x, y = y)) +
geom_line(aes(x=x,y=predict,color=predict),size=2) +
geom_point()
2.直接拟合(添加..y..)
ggplot(data = df, aes(x = x, y = y)) +
geom_smooth(method = "lm", se=T,
aes(color=..y..), formula = y ~ x) +
geom_point()
设置颜色
ggplot(data = df, aes(x = x, y = y)) +
geom_smooth(method = "lm", se=T,
aes(color=..y..), formula = y ~ x) +
geom_point()+
scale_color_gradient2(low = "#FF420E",mid="#FFD320",high = "#0084D1",midpoint = 150)
❝由于创建的点基本上都大于0,也可以设置为单一颜色渐变色,这样颜色随着y值的增大逐渐加深
❞
ggplot(data = df, aes(x = x, y = y)) +
geom_smooth(method = "lm", se=T,
aes(color=..y..), formula = y ~ x) +
geom_point()+
scale_color_gradientn(values = seq(0,1,0.2),
colours = c('#c6dbef','#9ecae1','#6baed6','#3182bd','#08519c'))
美化
ggplot(data = df, aes(x = x, y = y)) +
geom_point(size=3,alpha=1,pch=21,fill="#9ecae1",
color="white")+
geom_smooth(method = "lm", se=T,
aes(color=..y..), formula = y ~ x) +
scale_color_gradient2(low = "#FF420E",mid="#FFD320",high = "#0084D1",midpoint = 150)+
stat_poly_eq(formula = y~x,
aes(label = paste(..eq.label..,
..rr.label..,
..p.value.label..,
sep = "~~~")),
parse = TRUE) +
coord_cartesian(ylim = c(0,350),
xlim = c(0,105))+
labs(x=NULL,y=NULL)+
scale_y_continuous(breaks = c(0,100,200,300))+
scale_x_continuous(breaks = c(0,25,50,75,100))+
theme_bw()+
theme(panel.grid = element_blank(),
axis.text=element_text(color="black"),
legend.title = element_blank())
❝由于文章没有提供绘图代码,因此不知道作者是否用r语言绘制的散点图。在绘图完成之后我发现拟合的线是一截一截的,不过不影响效果。
❞
欢迎大家扫描下方二位码加入「QQ交流群」
「关注下方公众号下回更新不迷路」,如需要加入微信交流群,请在菜单栏处添加作者微信,备注单位+方向+姓名即可邀您进群
2021年个人年度小总结
ggplot2优雅的绘制点图
[热图-华夫图-瀑布图]用ggplot2一次性解决
新手友好:5分生信SCI全文复现
ggplot2优雅的带你绘制中国地图