我有两个dfs
df1 <- data.frame(x= seq(1,1000,1), y=rnorm(1000,500,250), z=rep(1:4,250))
df2 <- data.frame(x = c(450,481,512,571), y=c(450,481,512,571), z=1:4)我把它们画成这样;
library(ggplot2)
ggplot(df1) +
geom_point(aes(x=x,y=y,color = z),alpha=0.2) +
geom_point(data = df2, aes(x=x,y=y,color = z),size=4)我希望所有的x,y,对应于df1中的z=1,连接到x,y对应于df2中的z=1。这将从df2中的点创建某种类型的辐射线。我怎样才能做到这一点?
提前谢谢。
发布于 2022-03-16 17:08:04
我将通过z对这两个数据帧进行左连接,然后使用geom_segment。将z着色为离散变量也可能更有意义:
df3 <- dplyr::left_join(df1, df2, by = "z", suffix = c("_1", "_2"))
ggplot(df3) +
geom_point(aes(x_1, y_1, color = factor(z)), alpha = 0.2) +
geom_segment(aes(x_1, y_1, xend = x_2, yend = y_2, color = factor(z)),
alpha = 0.2) +
geom_point(data = df2, aes(x, y, fill = factor(z)), size = 5,
color = "black", shape = 21) +
theme_minimal()

https://stackoverflow.com/questions/71501162
复制相似问题