这一直是我一直在尝试找到一个解决方案的一段时间,但基本上我想知道是否有一个快速的方法来“闪避”线性图两个不同的数据集在ggplot2。R - ggplot dodge geom_lines
我的代码是目前:
#Example data
id <- c("A","A")
var <- c(1,10)
id_num <- c(1,1)
df1 <- data.frame(id,var,id_num)
id <- c("A","A")
var <- c(1,15)
id_num <- c(0.9,0.9)
df2 <- data.frame(id,var,id_num)
#Attempted plot
dodge <- position_dodge(width=0.5)
p<- ggplot(data= df1, aes(x=var, y=id)) +
geom_line(aes(colour="Group 1"),position="dodge") +
geom_line(data= df2,aes(x=var, y=id,colour="Group 2"),position="dodge") +
scale_color_manual("",values=c("salmon","skyblue2"))
p
主要生产:
这里的 “组2” 线隐藏所有的 “1组” 行的是不是我想。相反,我希望“第2组”行低于“第1组”行。我环顾四周,发现了以前的帖子:ggplot2 offset scatterplot points,但我似乎无法调整代码以在使用单独的数据框时使两个geom_lines闪避对方。
我一直在将我的y变量转换为数值并略微抵消它们以获得所需的输出,但我想知道是否有更快/更简单的方法使用ggplot的闪避功能获得相同的结果其他。
我的工作围绕代码很简单:
p<- ggplot(data= df1, aes(x=var, y=id_num)) +
geom_line(aes(colour="Group 1")) +
geom_line(data= df2,aes(x=var, y=id_num,colour="Group 2")) +
scale_color_manual("",values=c("salmon","skyblue2")) +
scale_y_continuous(lim=c(0,1))
p
给了我所需的输出:
所需的输出:
数值方法可以当一个有点麻烦我试图扩展它以适合我的实际数据。我必须将我的y值转换为因子,将它们更改为数值,然后将这些值合并到第二个数据集中,因此更快捷的方法将更可取。在此先感谢您的帮助!
您需要将这两个数据集合并成一个数据集才能进行回避工作 – Thierry
如果您的真实数据集确实如此simi大家可以很容易地将它们堆叠在一起,并使用* dplyr *中的'bind_rows'来添加组索引。 – aosmith