如何在ggplot2中抖动数据点

4

假设我有以下数据和图表:

require(reshape2)
require(ggplot2)
data <- data.frame(id=seq(1,9,1), var1=c(10,3,5,7,8,9,4,6,5), var2=c(9,3,5,7,8,9,4,6,5))
data_graph <- melt(data, id="id")
ggplot(data=data_graph, aes(y=value, x=id, group=variable, col=variable)) +
geom_line(size=2) + geom_point() + 
geom_text(aes(label=value), size=5, hjust=-.6, vjust=1.5)

几乎整个线路都有重叠部分。是否有办法使这些线条稍微晃动一下,让它们彼此接近但不重叠?或者做一些事情来知道这是两条线?


1
添加 linetype=variable 会有帮助吗?(可能帮助不大) - user2957945
1
请参考以下相关问题和解决方案:https://dev59.com/6lkS5IYBdhLWcg3ws4nr - Jerry T
1个回答

6

有一个名为jitter的函数可以实现这个功能。如果你只想在图表中添加抖动效果,以下代码可以实现:

ggplot(data=data_graph, aes(y=value, x=id, group=variable, col=variable)) +
  geom_line(size=2, 
            aes(y = jitter(value, 5), x = jitter(id, 2), group=variable, col=variable)) + 
  geom_point() + 
  geom_text(aes(label=value), size=5, hjust=-.6, vjust=1.5)
jitter函数中的第二个值指定要添加多少抖动。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接