【发布时间】:2018-10-06 00:45:57
【问题描述】:
问题:
我想用曲线连接点,而曲线的大小根据其各自端点的大小沿其路径调整。
可重现的例子:
library("tidyverse")
df <- data.frame(x=c(1,3,2),
y=c(1,4,3),
value=c(2,10,15),
order=c(1,2,3))
ggplot(df) +
geom_point(aes(x=x,
y=y,
size=value),
alpha=0.5)
到目前为止,一切都很好。现在我想根据以下规则添加连接点的曲线:
- 曲线应该按时间顺序连接点 1 -- 2 -- 3(根据
df$order即) - 通过
aes(size=value)创建的端点大小决定了各自的曲线大小。 - 曲线大小以一种非常平滑的方式增大/减小。
我想要实现的或多或少是这个(对不起我糟糕的 MS 绘画技巧......幸运的是,这个草图违反了规则 3......):
如果能够将aes() 传递给曲线也很好,例如colour...我一直在玩geom_curve 和geom_segment,但我没有走多远。 ..
整个练习旨在重现 this 惊人的信息图。
【问题讨论】:
-
关于您的想法的一些知识。 1)如果你有足够的点,你可以使用 geom_path() 使用曲线(段)连接点。 2)。如果您希望曲线平滑并根据大小进行调整,曲线的形状会产生误导。
-
我对此非常感兴趣。您可能想查看
ggforce包中的geom_link2,它类似于geom_path,但在点之间插入了一个计算索引。您可能还会研究如何在您的点之间做样条,但我不知道如何做到这一点