散点图的绘制 拟合散点图曲线
# 加载数据
# 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'
这个函数以前没有用到过,看帮助的意思是添加个案的识别
# 添加识别点
# 在xy轴上出现短横线用于标示个案
p + geom_point() + geom_rug()
# 添加颜色区别
p + geom_point(aes(color = cyl)) +
geom_rug(aes(color = cyl))
当数据集的数据过多时,绘图就会显得很杂乱 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