如何在ggplot2中抖动线条
How to jitter lines in ggplot2
假设我有以下数据和绘图:
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)
两条线的几乎全部都有重叠。有没有办法以某种方式抖动线条,使它们彼此靠近,但不重叠。还是做点什么才知道有两条线?
有一个函数可以做到这一点,叫做 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
函数中的第二个值指定要添加多少抖动
假设我有以下数据和绘图:
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)
两条线的几乎全部都有重叠。有没有办法以某种方式抖动线条,使它们彼此靠近,但不重叠。还是做点什么才知道有两条线?
有一个函数可以做到这一点,叫做 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
函数中的第二个值指定要添加多少抖动