我有一个分组数据如下:
group x y
group1 0 5
group4 0 5
group1 7 5
group4 0 5
group5 7 5
group1 7 5
group1 0 6
group2 0 6
group4 0 5
group2 0 5
group3 7 5
Run Code Online (Sandbox Code Playgroud)
x 和 y 都是离散值,范围在 0 到 7 之间。我想根据各自的 x 和 y 值将每个组数据放置在 xy 平面上。例如,我可以有多个 group1 点,所有这些应该共享相同的颜色。如何在 R 中做到这一点?
数据:
dat <- read.table(text = "group x y
group1 0 5
group4 0 5
group1 7 5
group4 0 5
group5 7 5
group1 7 5
group1 0 6
group2 0 6
group4 0 5
group2 0 5
group3 7 5", header = TRUE)
Run Code Online (Sandbox Code Playgroud)
您可以使用优秀的ggplot2包来轻松绘图:
library(ggplot2)
ggplot(dat, aes(x = x, y = y, colour = group)) +
geom_point() +
facet_wrap( ~ group)
Run Code Online (Sandbox Code Playgroud)
在这里,我曾经facet_wrap为每个组创建构面。原则上这不是必需的,因为可以通过颜色区分组的点。但在这种情况下,图中只有三个不同的位置。因此,如果将数据绘制在单个散点图中,则并非所有点都可见。

使用 Sven 答案中的数据,您还可以查看lattice 包,它应该已经随 R 安装一起安装:
library(lattice)
# Each group in a separate mini plot
xyplot(y ~ x | group, data = dat)
# All groups in one plot, different colors for each group
# Not at all interesting with the example data you've provided
xyplot(y ~ x, groups=dat$group, data = dat)
Run Code Online (Sandbox Code Playgroud)
下面是每个示例的示例,其中包含更多数据:
set.seed(1)
mydf <- data.frame(
group = sample(letters[1:4], 50, replace = TRUE),
x = runif(50, 0, 7),
y = runif(50, 0, 7)
)
xyplot(y ~ x, groups=mydf$group, data = mydf,
auto.key = list(corner = c(0, .98)), cex = 1.5)
Run Code Online (Sandbox Code Playgroud)

xyplot(y ~ x | group, data = mydf,
auto.key = list(corner = c(0, .98)), cex = 1.5)
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
56657 次 |
| 最近记录: |