ggplot2_散点图

时间:2022-07-25
本文章向大家介绍ggplot2_散点图,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

ggplot_散点图

sunqi

2020/8/1

R 概述

散点图的绘制 拟合散点图曲线

获得示例数据

# 加载数据
# mecars是一个汽车相关的数据集
data("mtcars")
mydata <- mtcars

# 转换cyl为因子类型
mydata$cyl <- as.factor(mydata$cyl)

# 查看数据集前4行
head(mydata[, c("wt", "mpg", "cyl", "qsec")], 4)
##                   wt  mpg cyl  qsec
## Mazda RX4      2.620 21.0   6 16.46
## Mazda RX4 Wag  2.875 21.0   6 17.02
## Datsun 710     2.320 22.8   4 18.61
## Hornet 4 Drive 3.215 21.4   6 19.44
# 加载包

library(ggplot2)
# 设置主题格式,这部分可以选择在绘制中进行
# 也可以在theme_set中进行全局设置
theme_set(
  theme_bw() +
    theme(legend.position = "top"))

绘图

geom_point():用于绘制散点图 参数 color:点的颜色 size:点的大小 shape :点的形状

# 设置主函数
p <- ggplot(mydata, aes(x = wt, y = mpg))

# 绘制散点图
p + geom_point()
# 更改点颜色和大小形状
p + geom_point(color = "#00AFBB", size = 2, shape = 23)# shape的数字有特殊只带
# 多组散点图
# 根据cyl设置散点的形状
# cyl是发动机的缸数
p + geom_point(aes(shape = cyl))
# 根据分组,进行不同的颜色设置
p + geom_point(aes(shape = cyl, color = cyl)) +
  # color_manual的作用是自定义颜色,而不是采用默认的颜色分组
  scale_color_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))

添加拟合的曲线

geom_smooth():添加一条平滑的曲线

参数:color:设置颜色 size:线的粗细 linetype:线的类型 fill: 置信区间的颜色填充 method:平滑曲线的绘制方法。“loess:局部加权回归;“lm”:线性回归 se:置信区间 fullrange:是否全部绘制 level:置信区间值,默认为0.95

# 添加线性回归曲线
p + geom_point() + geom_smooth(method = lm)
## `geom_smooth()` using formula 'y ~ x'
# 去除置信区间
p + geom_point() +
  geom_smooth(method = lm, se = FALSE)
## `geom_smooth()` using formula 'y ~ x'
# 局部加权回归:默认的方法
p + geom_point() + geom_smooth()
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
# 更改颜色设置
p + geom_point(aes(color = cyl, shape=cyl)) +
  # 曲线的颜色和fill用于区分组
  geom_smooth(aes(color = cyl, fill = cyl), method = lm) +
  #scale_color_manual和scale_fill_manual用于自定义配色方案设置
  scale_color_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))+
  # 颜色填充方案
  scale_fill_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))
## `geom_smooth()` using formula 'y ~ x'
# 去除置信区间,并扩展曲线范围
p + geom_point(aes(color = cyl, shape = cyl)) +
  # se 设置为false,fullrange 设置为true
  geom_smooth(aes(color = cyl), method = lm, se = FALSE, fullrange = TRUE) +
  scale_color_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))+
  scale_fill_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))
## `geom_smooth()` using formula 'y ~ x'

geom_rug()

这个函数以前没有用到过,看帮助的意思是添加个案的识别

# 添加识别点
# 在xy轴上出现短横线用于标示个案
p + geom_point() + geom_rug()
# 添加颜色区别
p + geom_point(aes(color = cyl)) +
  geom_rug(aes(color = cyl))

Jitter points

当数据集的数据过多时,绘图就会显得很杂乱 position = position_jitter()用于避免过量绘图 width: x轴上的点 height: y轴上的点

# 不设置jitter
p1 <- ggplot(mpg, aes(displ, hwy)) +
  geom_point()

# 设置jitter
p2 <- ggplot(mpg, aes(displ, hwy)) +
  geom_point(position = position_jitter(width = 0.5, height = 0.5))
library(patchwork)
p1+p2

添加点的文本

函数:geom_text() and geom_label():添加文本和标签 geom_text_repel() and geom_label_repel():文本注释,在ggrepel包中

# install.packages("ggrepel")
library(ggrepel)

# 添加点
# 将汽车的名字赋值给labs,也就是每个个案的标识
.labs <- rownames(mydata)
p + geom_point(aes(color = cyl)) +
  # 给点添加标签
  geom_text_repel(aes(label = .labs,  color = cyl), size = 3)+
  scale_color_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))
# 使用geom_label_repel添加文本
#这个函数给出的文本带有方框
p + geom_point(aes(color = cyl)) +
  geom_label_repel(aes(label = .labs,  color = cyl), size = 3)+
  scale_color_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))

气泡图

# alpha是透明度 size是设置气泡的因素
p + geom_point(aes(color = cyl, size = qsec), alpha = 0.5) +
  scale_color_manual(values = c("#00AFBB", "#E7B800", "#FC4E07")) +
  # 调整气泡的范围
  scale_size(range = c(0.5, 12))
# 颜色渐变

p + geom_point(aes(color = mpg,size = qsec) ) +
  scale_color_gradientn(colors = c("#00AFBB", "#E7B800", "#FC4E07")) +
  theme(legend.position = "right")+
  scale_size(range = c(0.5, 12))

结束语

我比较喜欢ggplot2的一点是可以将绘图程序写进函数,可以批量绘图,批量下载,至于设置这些东西,能记就记,记不住,用的时候百度。

love&peace