抖动geom_line()(jitter geom_line())

2019-07-29 17:02发布

有没有办法去抖动的线geom_line() 我知道这有点违背了这一阴谋的目的,但如果你有几行情节,并希望他们都表现出它可能是得心应手。 也许一些其他的解决这个问题的可视性

请参阅下面的代码,

A  <- c(1,2,3,5,1)
B  <- c(3,4,1,2,3)
id <- 1:5
df <- data.frame(id, A, B)


# install.packages(reshape2)
require(reshape2) # for melt
dfm <- melt(df, id=c("id"))

# install.packages(ggplot2)
require(ggplot2)
p1 <- ggplot(data = dfm, aes(x = variable, y = value, group = id, 
color= as.factor(id))) + geom_line() + labs(x = "id # 1 is hardly 
visible as it is covered by id # 5") + scale_colour_manual(values = 
c('red','blue', 'green', 'yellow', 'black')) 


p2 <- ggplot(subset(dfm, id != 5), aes(x = variable, y = value, 
group = id, color= as.factor(id))) + geom_line() + labs(x = "id # 
5 removed, id # 1 is visible") + scale_colour_manual(values = 
c('red','blue', 'green', 'yellow', 'black')) 

# install.packages(RODBC)
require(gridExtra)

grid.arrange(p1, p2)

Answer 1:

你可以试试

geom_line(position=position_jitter(w=0.02, h=0))

看看是否行之有效。



Answer 2:

如果你只是想避免两线正好从重叠,现在有一个更好的办法: position_dodge() ,其中“通过重叠闪躲到一边调整位置”。 这是比增加抖动任何线路,是没有必要的,即使它更好。

避免GGPLOT2线正好重叠使用position_dodge()

代码示例:

df<-data.frame(x=1:10,y=1:10,z=1:10);
df.m <- melt(df, id.vars = "x");
ggplot(df.m, aes(x=x,y=value,group=variable,colour=variable)) 
    + geom_line(position=position_dodge(width=0.2));

由于position_dodge()我们现在可以看到,有两条线中的情节,这恰好正是共同前前后后:



Answer 3:

我倾向于使用不同的linestyles,这样,就是说,在它上面的红色虚线蓝色实线“通过偷窥”。 话又说回来,它不取决于你想要传授给读者什么。 请记住,首先是数据应该是点和线的理论 ,除非这使事情变得混乱。 除非Y X值是相同的,它会更容易看到的点。 (或者你可以应用现有的jitter功能的x值)接下来,如果你只是想表明它运行是在“捆绑”,哪些是异常区,重叠并不重要,因为它很可能两个异常值将是近相等。

如果你想显示一串近乎相等的奔跑,你可能更喜欢(这是说,你的读者会理解的更好)暗算平均三角洲,而不是实际值。



文章来源: jitter geom_line()
标签: r plot ggplot2