r - `geom_line()`连接映射到不同组的点

标签 r ggplot2

我想根据两个变量的相互作用对数据进行group编码,但只能将美观性映射到这些变量之一。 (另一个变量表示理论上应该等效的重复项)。我可以找到实现此目的的优雅方法,但似乎应该有一种更优雅的方法。

例如

# Data frame with two continuous variables and two factors 
set.seed(0)
x <- rep(1:10, 4)
y <- c(rep(1:10, 2)+rnorm(20)/5, rep(6:15, 2) + rnorm(20)/5)
treatment <- gl(2, 20, 40, labels=letters[1:2])
replicate <- gl(2, 10, 40)
d <- data.frame(x=x, y=y, treatment=treatment, replicate=replicate)

ggplot(d, aes(x=x, y=y, colour=treatment, shape=replicate)) + 
  geom_point() + geom_line()

这几乎是正确的,只是我不想用不同的形状来表示这些点。似乎group=interaction(treatment, replicate)会有所帮助(例如,基于this question,但geom_line()仍会连接不同组中的点:
ggplot(d, aes(x=x, y=y, colour=treatment, group=interaction("treatment", "replicate"))) + 
  geom_point() + geom_line()

我可以通过手动创建一个交互列和group ing来解决该问题:
d$interact <- interaction(d$replicate, d$treatment)

ggplot(d, aes(x=x, y=y, colour=treatment, group=interact)) + 
  geom_point() + geom_line()

但似乎应该有一种更多的ggplot2 -native方法,使geom_line仅连接来自同一组的点。

最佳答案

如果执行以下操作,您的代码将起作用。我认为您有一个问题,因为aes"treat""replicate"视为向量,所以它等效于group = 1

ggplot(d, aes(x=x, y=y, colour=treatment, group=interaction(treatment, replicate))) + 
  geom_point() + geom_line()

关于r - `geom_line()`连接映射到不同组的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18598953/

相关文章:

javascript - 如何使用通用按钮+ selectInput 通过R Shiny 中的javascript更改轨迹n的图例图例状态

r - 将向量元素分配给同一向量中不是自身的另一个元素( secret 圣诞老人算法)

r - R 中重复测量的意大利面条图

r - 使用 xml2 将子节点添加到节点

r - R 是否有任何包用于解析 URL 的各个部分?

r - ggplot2 中的多层

r - 使用 R 计算镜头图每个 bin 中的平均点

r - ggplot : percentile lines by group automation

r - 抑制 r 中的读取器解析问题

r - 使用 ggplot2 生成过滤列的条形图