【发布时间】:2016-08-05 01:18:25
【问题描述】:
我想创建一个可以在 ggplot2 中创建的类似 sankey 的图,其中我的起点和终点位置之间有曲线。目前,我的数据如下所示:
df <- data.frame(Line = rep(letters[1:4], 2),
Location = rep(c("Start", "End"), each=4),
X = rep(c(1, 10), each = 4),
Y = c(c(1,3, 5, 15), c(9,12, 14, 6)),
stringsAsFactors = F)
例如:
Line Location X Y
1 a Start 1 1
2 a End 10 9
并创建一个看起来像这样的图:
library(ggplot2)
ggplot(df) +
geom_path(aes(x= X, y= Y, group = Line))
我希望看到这样的数据:
这是设置数据的另一个选项:
df2 <- data.frame(Line = letters[1:4],
Start.X= rep(1, 4),
Start.Y = c(1,3,5,15),
End.X = rep(10, 4),
End.Y = c(9,12,14,6))
例如:
Line Start.X Start.Y End.X End.Y
1 a 1 1 10 9
我可以找到如何将曲线添加到基础 R 图形的示例,但这些示例并未演示如何获取中间点的数据框以绘制该曲线。我更喜欢使用dplyr 进行数据操作。我想这将需要一个 for 循环来构建一个插值表。
这些示例相似,但不会产生 s 形曲线:
Plotting lines on map - gcIntermediate
http://flowingdata.com/2011/05/11/how-to-map-connections-with-great-circles/
提前谢谢你!
【问题讨论】: