R语言统计与绘图:绘制带边际图的散点图

前些天在公众号后台,有读者留言,问下面这张图怎么绘制。

恰好我最近在学习散点图,学习到了这张图,今天我们就来学习带边际图的散点图的绘制。

这张图可以使用ggpubr包的ggscatterhist()函数绘制。


目  录

  • 1. 加载数据集
  • 2. 绘制图形
    • 2.1 绘制简单图形
    • 2.2 边际图为直方图
    • 2.3 添加参考线
    • 2.4 添加回归线
    • 2.5 向模型添加系数
  • 3. 复杂边际图
  • 4. ggscatterhist()函数

1. 加载数据集

首先安装需要的包和加载数据集。

install.packages("ggpubr"# 安装包
library(ggpubr) # 加载包
data(iris) # 加载数据集
View(iris) # 预览数据集

2. 绘制图形

2.1 绘制简单图形

带边际密度图的散点图。

plots <- ggscatterhist(iris, # 包含绘图变量的数据集
                       x = "Sepal.Length", y = "Sepal.Width"# 绘图变量
                       color = "#00AFBB"# 设置颜色
                       margin.params = list(fill = "#00AFBB")) # 设置边际图的颜色

2.2 边际图为直方图

将边际图修改为直方图。

plots <- ggscatterhist(iris, # 包含绘图变量的数据集
                       x = "Sepal.Length", y = "Sepal.Width"# 绘图变量
                       color = "#00AFBB"# 设置颜色
                       margin.plot = "histogram"# 设置边际图的类型
                       margin.params = list(fill = "#00AFBB")) # 设置边际图的颜色

2.3 添加参考线

plots$sp <- plots$sp +  # sp为散点图主图
  geom_hline(yintercept = 3, linetype = "dashed", color = "blue") +
  geom_vline(xintercept = 6, linetype = "dashed", color = "red")
plots

2.4 添加回归线

运行stat_smooth() 函数并设定method=lm即可向散点图中添加线性回归拟合线,调用lm()函数对数据拟合线性模型。

plots$sp <- plots$sp +
  stat_smooth(method=lm)
plots

默认情况下,stat_smooth()函数会为回归拟合线添加95%的置信域,置信域对应的置信水平可通过设置level参数来进行调整。设定参数se=FALSE时,系统将不会对回归拟合线添加置信域。

2.5 向模型添加系数

先建立线性模型,计算出模型系数,再把系数以文本形式添加到图形中。

model <- lm(Sepal.Length ~ Sepal.Width, iris)
summary(model)

上面的结果表明模型的r2值是0.0138,p-value为0.1519。

调用annotate()函数向其手动添加文本。

plots$sp <- plots$sp +
  annotate("text", x=4.7, y=4.4, parse=TRUE,
           label="r^2 == 0.0138 * '  p-value = 0.1529'")
plots

3. 复杂边际图

ggscatterhist(
  iris, x = "Sepal.Length", y = "Sepal.Width",
  color = "Species", size = 2.5, alpha = 0.5,
  palette = c("#00AFBB""#E7B800""#FC4E07"),
  margin.params = list(fill = "Species", color = "black", size = 0.2)
)
ggscatterhist(
  iris, x = "Sepal.Length", y = "Sepal.Width",
  color = "Species", size = 3, alpha = 0.6,
  palette = c("#00AFBB""#E7B800""#FC4E07"),
  margin.plot = "histogram",
  ggtheme = theme_bw()
)

4. ggscatterhist()函数

ggscatterhist(data, x, y, group = NULL, color = "black", fill = NA, palette = NULL, 
              shape = 19, size = 2, linetype = "solid", bins = 30,
              margin.plot = c("density""histogram""boxplot"), margin.params = list(),
              margin.ggtheme = theme_void(), margin.space = FALSE, main.plot.size = 2,
              margin.plot.size = 1, title = NULL, xlab = NULL, ylab = NULL, legend = "top",
              ggtheme = theme_pubr(), print = TRUE...)
## 部分参数解释
data # 包含x、y变量的数据框
x, y # 绘图用的x、y变量
group # 分组变量;如果缺少颜色和形状选项,则按组更改点的颜色和形状。当您要创建分组的边线箱图时,也应指定该参数。
color、fill # 散点的颜色
palette # 设置线图颜色的调色板;可为灰色调色板"grey";自定义调色板c("blue","red")
# ggsci包调色板:"npg","aaas","lancet","jco","ucscgb","uchicago","simpsons"和"rickandmorty"。
shape  # 散点的形状
size # 散点的大小
linetype # 线形 ("solid", "dashed", ...)
bins # 直方图的条形数量,默认30,可自定义数值
margin.plot # 边际图的类型("density", "histogram", "boxplot"),
# 默认"hist",绘制直方图
margin.params # 作用于边际图的参数,设置颜色、线形等
margin.ggtheme # 边际图的图形主题,默认theme_void().
margin.space # 逻辑词,为TRUE,则在边际图与主图之间增加空间
main.plot.size # 主图的宽度,默认为2
margin.plot.size # 边际图的宽度,默认为1
title # 图形标题
xlab、ylab # x轴、y轴标签
legend  # 指定图例的位置,允许值有:"top", "bottom", "left", "right".
ggtheme # 散点图的主题,默认为theme_pubr()
print # 逻辑词,默认输出图形

以上函数解释翻译自帮助文件,如有错误/不懂地方,请自行查阅帮助文件。

参考资料

  1. R数据可视化手册;
  2. ggscatterhist()函数帮助文件。
统计与绘图

R语言统计与绘图:组合图形布局

2020-7-23 0:01:56

统计与绘图

R语言统计与绘图:绘制散点图

2020-7-23 0:02:49

声明 本网站部分文章源于互联网,出于传递更多信息和学习之目的转载,并不保证内容正确或赞同其观点。
如转载稿涉及失效、版权等问题,请立即联系管理员;我们会予以修改、删除相关文章,请留言反馈
Notice: When your legal rights are being violated, please send an email to: sci666net@qq.com.
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索