R ggplot2()按因子绘制一个变量的自身?
我试图使用ggplot创建一个带有两条线的几何点,通常这两条线来自数据帧中的两个不同变量,例如R ggplot2()按因子绘制一个变量的自身?,r,ggplot2,R,Ggplot2,我试图使用ggplot创建一个带有两条线的几何点,通常这两条线来自数据帧中的两个不同变量,例如 library(ggplot2) ggplot(aes(x=var1,y=var2),data = df) + geom_point() 然而,在这种情况下,我有一个垂直堆叠的变量(代表一个复制1和2),在另一列中有一个分数(同样来自两个复制): 我想做的是一个简单的ggplot或折线图,试验1在y轴上,试验2在x轴上。在基本绘图函数中,这很简单,因为它只需要将数据拆分为两个不同的数据帧。然而,在
library(ggplot2)
ggplot(aes(x=var1,y=var2),data = df) + geom_point()
然而,在这种情况下,我有一个垂直堆叠的变量(代表一个复制1和2),在另一列中有一个分数(同样来自两个复制):
我想做的是一个简单的ggplot或折线图,试验1在y轴上,试验2在x轴上。在基本绘图函数中,这很简单,因为它只需要将数据拆分为两个不同的数据帧。然而,在ggplot中,我总是使用相同的数据帧,据我所知,我不能为调用使用两个单独的数据帧。那我该怎么做呢
我猜在绘图之前使用group_by来安排data.frame会有一些工作,但我不确定如何实现它。我希望这已经足够清楚了。我仍然会使用一个data.frame,但会进行重塑(您可以使用
dcast
fromrestrape2
包)。例如:
# use `nrow(df) / 2` to split data in half
df2 <- reshape2::dcast(df, seq_len(nrow(df) / 2) ~ fac, value.var = "score")
使用tidyverse函数,您可以
library(dplyr)
library(tidyr)
library(ggplot2)
dd %>%
group_by(fac) %>%
mutate(id=1:n()) %>%
spread(fac, score) %>%
ggplot(aes(trial2, trial1)) +
geom_line()
你能澄清一下突变(id=1:n())吗?这实际上是在为每个因素的长度创建索引吗?如果是这样的话,它们不按顺序排列有关系吗?好吧,您需要某种方法来匹配试验1的值和试验2的值。我以为你想让他们按照出现的顺序配对。这只是在组中对它们进行索引,以便它们可以匹配。好的,我将尝试按第三列排序,这实际上是一个唯一标识符(id),然后看看会发生什么。将报告。如果您已经有ID,那么您可以使用它。不需要创建一个假的。好的,当我这样做时,它会创建两列,但在行之间交替插入NAs,这意味着它无法正确打印。基本上每个id都交错一行。感谢您的输入。我选择了第一个选项,但看起来不错。
library(ggplot2)
ggplot(df2, aes(trial2, trial1)) + geom_point()
library(dplyr)
library(tidyr)
library(ggplot2)
dd %>%
group_by(fac) %>%
mutate(id=1:n()) %>%
spread(fac, score) %>%
ggplot(aes(trial2, trial1)) +
geom_line()