r语言将y~x1,y~x2的两组数据画在同一组散点图上,其中第一组的点用黑色边框,红色填充,第二组用的点用黑色边框,蓝色填充,并分别画出两条拟合曲线,第一条线黑色边框红色填充,第二条线黑色边框蓝色填充
时间: 2023-07-30 12:09:02 浏览: 51
可以使用ggplot2包来完成这个任务。首先需要将两组数据合并成一个数据框,并添加一个变量用来区分两组数据。
假设第一组数据为df1,第二组数据为df2,x1和x2都是自变量,y是因变量,代码如下:
```
library(ggplot2)
# 将 df1 和 df2 合并成一个数据框
df <- rbind(transform(df1, group = "group1"), transform(df2, group = "group2"))
# 绘制散点图和拟合曲线
ggplot(df, aes(x = x1, y = y, color = group, fill = group)) +
geom_point(shape = 21, size = 3, stroke = 1) +
geom_smooth(method = "lm", se = FALSE, alpha = 0.5, aes(fill = group), size = 1.2) +
geom_point(data = df2, shape = 21, size = 3, stroke = 1, fill = "blue", color = "black") +
geom_point(data = df1, shape = 21, size = 3, stroke = 1, fill = "red", color = "black") +
geom_smooth(data = df1, method = "lm", se = FALSE, alpha = 0.5, fill = "red", color = "black", size = 1.2) +
geom_smooth(data = df2, method = "lm", se = FALSE, alpha = 0.5, fill = "blue", color = "black", size = 1.2) +
scale_color_manual(values = c("black", "black")) +
scale_fill_manual(values = c("red", "blue")) +
theme_bw()
```
解释一下代码中的各个参数:
- `aes()` 函数用来设置 x,y,color 和 fill 的映射关系。
- `geom_point()` 函数用来绘制散点图,`shape = 21` 表示使用实心圆形作为点的形状,`size = 3` 表示点的大小为 3,`stroke = 1` 表示点的边框大小为 1。
- `geom_smooth()` 函数用来绘制拟合曲线,`method = "lm"` 表示使用线性模型进行拟合,`se = FALSE` 表示不绘制置信区间,`alpha = 0.5` 表示设置透明度为 0.5,`aes(fill = group)` 表示按照组别进行填充,`size = 1.2` 表示线条粗细为 1.2。
- `scale_color_manual()` 和 `scale_fill_manual()` 函数用来手动设置颜色和填充色,`values = c("black", "black")` 表示分别对应黑色边框和黑色填充。
- `theme_bw()` 函数用来设置背景为白色。