我有三列:“原创”,“pos1”,“pos2”。每行都是一个人。我想创建一个散点图,其中“原始”在x轴上,pos1和pos2值在y轴上。所以每个原件都有一个pos1点和一个pos2点。我可以创建两种不同的颜色来区分pos1和pos2点。但我想要的是为每个人在pos1和pos2之间添加一条线。如果我有100个人,那么将有100条短线,连接每个pos1和pos2。我有什么方法可以在ggplot中做到这一点吗?
谢谢!
答案 0 :(得分:2)
听起来你正在寻找geom_segment
。像下面这样的东西可以工作:
library(ggplot2)
ggplot(df, aes(x = original)) +
geom_point(aes(y = pos1, col = "pos1")) +
geom_point(aes(y = pos2, col = "pos2")) +
geom_segment(aes(xend = original,
y = pos1, yend = pos2)) +
ylab("positions") +
scale_colour_manual(name = "Position",
values = c(pos1 = "red",
pos2 = "blue"))
数据:
set.seed(1)
df <- data.frame(
original = 1:100,
pos1 = rnorm(100),
pos2 = rnorm(100, mean = 5)
)
如果这对您不起作用,请分享实际数据样本。