df <- data.frame( x = rnorm(120, c(0, 2, 4)), y = rnorm(120, c(1, 2, 1)), z = letters[1:3] ) 其中x 表示数据的横坐标,y 表示数据纵坐标,z 表示类别(a,b,c 三类)。 (1) 将 a,b,c 三类,画在一张图上,并用颜色区分类别。 (2) 将a,b,c 三类,分别画在并列排放的三张图上(点用黑色)。 (3) 在(2)的基础上,每张子图上再加上每类点的质心(质心用颜色区分,size=4)。 (4) 将 a,b,c 三类,分别画在并列排放的三张图上(点用彩色)。每张子图上,其他 数据用灰色(”grey70”)显示。(例如:第一张子图 a 类数据是彩色,则 b 和c 类 数据是灰色。)
时间: 2024-03-10 14:49:28 浏览: 171
好的,我来帮您实现这个问题。以下是代码实现:
```R
# 生成数据
set.seed(123)
df <- data.frame(x = rnorm(120, c(0, 2, 4)), y = rnorm(120, c(1, 2, 1)), z = factor(rep(letters[1:3], each = 40)))
# 安装 ggplot2 包(如果未安装的话)
# install.packages("ggplot2")
library(ggplot2)
# (1) 将 a,b,c 三类,画在一张图上,并用颜色区分类别。
ggplot(df, aes(x, y, color = z)) + geom_point()
# (2) 将a,b,c 三类,分别画在并列排放的三张图上(点用黑色)。
ggplot(df, aes(x, y)) +
geom_point(aes(color = z), size = 1, shape = 21, fill = "black") +
facet_wrap(~z)
# (3) 在(2)的基础上,每张子图上再加上每类点的质心(质心用颜色区分,size=4)。
ggplot(df, aes(x, y)) +
geom_point(aes(color = z), size = 1, shape = 21, fill = "grey70") +
stat_summary(aes(color = z), fun = "mean", geom = "point", size = 4, fill = "white") +
facet_wrap(~z)
# (4) 将 a,b,c 三类,分别画在并列排放的三张图上(点用彩色)。每张子图上,其他 数据用灰色(”grey70”)显示。
ggplot(df, aes(x, y)) +
geom_point(aes(color = z), size = 3) +
scale_color_manual(values = c("a" = "red", "b" = "green", "c" = "blue")) +
facet_wrap(~z) +
theme_classic() +
theme(strip.background = element_rect(fill = "grey70"))
```
注释中已经说明了每一步的实现方法,代码中还使用了 ggplot2 包来绘制图表。如果您在使用过程中有任何问题,欢迎随时向我提问。
阅读全文