查看原文
其他

跟着PNAS学绘图-ggplot2绘制散点图添加渐变拟合曲线

ANERYAN R语言数据分析指南 2023-06-15

偶然间看到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优雅的带你绘制中国地图


ggplot2绘制基因作用元件图

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存