在ggplot2

时间:2019-10-14 15:42:24

标签: r ggplot2 dplyr

我正在寻找一种表示向量的方法,该向量是从ggplot中给定角度和大小的点上得出的。我已经计算出这些向量的端点应该是什么,但是无法找到一种在ggplot2中正确绘制该向量的方法。简而言之,鉴于对(X,Y,vec.x,vec.y)的观察,我如何绘制从(X,Y)到(vec.x,vec.y)的线而未显示(vec。 x,vec.y)?

我的第一个直觉是使用geom_line,但这似乎依赖于连接不同的观测值,因此我需要将每个观测值分为两个观测值,一个具有原始点,一个具有矢量端点。但是,这似乎很混乱,并且似乎应该有一种更清洁的方法来实现这一目标。此外,由于将原点绘制在同一geom_point调用中,因此显示原始点却隐藏矢量点变得很复杂。

以下是我正在谈论的形式的样本数据集:

test <- tibble(
  x = c(1,2,3,4,5),
  y = c(5,4,3,2,1),
  vec.x = c(1.5,2.5,3.5,4.5,5.5),
  vec.y = c(4,3,2,1,0)
)

test %>%
  ggplot() +
  geom_point(aes(x=x,y=y),color='red') +
  geom_point(aes(x=vec.x,y=vec.y),color='blue')

我希望实现的是,但是没有蓝点: 1

有什么想法吗?抱歉,如果这是重复的问题。我做了一些谷歌搜索,却找不到ggplot的类似问题。

1 个答案:

答案 0 :(得分:1)

test %>%
    ggplot() +
    geom_point(aes(x=x,y=y),color='red') +
    geom_point(aes(x=vec.x,y=vec.y),color='blue') +
    geom_segment(
        aes(x = x,y = y, xend = vec.x,yend = vec.y),
        arrow = arrow(length = unit(0.03,units = "npc")),
        size = 1
    )

enter image description here

参考:https://ggplot2.tidyverse.org/reference/geom_segment.html