ggplot2绘制散点图配合拟合曲线和边际分布直方图

2023-11-03 10:19:45 浏览数 (2)

图形展示

图形解读

❝此图使用经典的企鹅数据集进行展示,在散点图的基础上按照分组添加拟合曲线及回归方程与R,P值,后使用ggExtra添加密度曲线与数据分布直方图,使用已有R包进行绘制非常的方便,此图大概有以下几点注意事项。 ❞

1.拟合曲线的添加

❝拟合曲线的添加在R中常用的大概有两个函数geom_smooth与ggmpisc::stat_poly_line。两者均可用于在R图形中添加平滑线或拟合线,需要选择正确的模型。它们有一些相似之处,但也有一些关键的区别。 ❞

stat_poly_line 是一个在 ggplot2 图形中添加多项式回归线的函数。这个函数直接计算多项式回归模型,并将拟合线添加到图形上。它允许指定多项式的阶数,即回归方程中最高次项的次数。可直接在图形上添加拟合线,而不是基于数据点的平滑。

geom_smooth是一个更通用的函数,用于在 ggplot2 图形中添加平滑曲线或拟合线。它支持多种平滑方法,包括局部回归(loess)、光滑样条(smooth spline)和线性模型。它可以自动选择平滑参数,还可以显示拟合线周围的置信区间。

回归方程的添加

❝stat_poly_eq:用于添加多项式回归方程和相关统计量(如 R2、p 值等)的标签。这个函数不仅仅限于线 性回归,还可以用于更高阶的多项式回归。 ❞

加载R包

代码语言:javascript复制
library(tidyverse)       
library(ggsci)           
library(ggExtra)         
library(ggpmisc)        
library(palmerpenguins) 

构建标签数据

代码语言:javascript复制
labels <- tibble(species = c("Chinstrap", "Adelie", "Gentoo"),
                 species_x = c(190, 205, 228),
                 species_y = c(56, 38, 43))

数据可视化

代码语言:javascript复制
p <- ggplot(penguins, aes(flipper_length_mm, bill_length_mm, color=species))  
  geom_point(aes(size = body_mass_g), alpha = 0.5)    # 添加散点图层,点的大小表示体重
  stat_poly_line(formula = y ~ x)    # 添加线性回归线
  stat_poly_eq(formula = y ~ x,  # 添加线性回归方程和统计量
               aes(label = use_label(c("eq", "adj.R2", "p"), sep = "*"; "*")),
               size = 3, label.x.npc = "right", label.y.npc = "bottom", rr.digits = 3)  
  geom_text(data = labels,  # 添加文本标签
            aes(x = species_x, y = species_y, label = species, colour = species), size = 4.5)  
  scale_color_npg()    
  labs(x = "Flipper length (mm)n", y = "Bill length (mm)")    # 设置坐标轴标签
  guides(colour = FALSE, size = FALSE)    # 不显示颜色和大小的图例
  theme_classic()  

添加密度曲线

代码语言:javascript复制
ggMarginal(p, type = "densigram", groupColour = TRUE, groupFill = TRUE, alpha = 0.4)

❝本节内容介绍到此结束,过程仅供参考;有需要学习时间可视化的朋友,欢迎到小编的「淘宝店铺」 「R语言数据分析指南」购买「2023年度会员文档」同步更新中「售价149元」,内容主要包括各种「高分论文的图表分析复现以及一些个性化图表的绘制」均包含数据 代码;按照往年数据小编年产出约在150 以上 ❞

0 人点赞