如何强制 `geom_line()` 不使用最短距离连接点?

How to force `geom_line()` to NOT use the shortest distance to connect points?

ggplot(mtcars, aes(wt, mpg)) + geom_line() + geom_point()

geom_line() 用一条直线连接点,即两点之间的最短路径。我希望这条线先在水平(或垂直)方向上直线,然后向上或向下(或向右)连接后面的点。

听起来这个选项可能尚未集成到 ggplot2 中。一种方法是创建一整套点,这些点在 geom_point() 时不会显示,但将位于与后面的点相同的 x 位置(或与点相同的 x 位置在前面)和与前面的点相同的 y 位置(或与后面的点相同的 y 位置)。这听起来像是一个复杂的解决方案!而且我并没有真正设法让它发挥作用。有更好的解决方案吗?无论如何,你能帮忙制作一个方便的函数来完成这两个技巧(1.first 垂直和 2.first 水平)吗?

听起来你在找 geom_step: "Connect observations by stairs"

ggplot(mtcars, aes(wt, mpg)) +
  geom_step() +
  geom_point()