更改geom_spoke

时间:2016-08-26 19:46:03

标签: r ggplot2

geom_spoke()中是否有办法让箭头指向给定数据的方向?如果我有一个位置(x,y)和一个角度的数据,我觉得使用geom_spoke是理想的,但我希望能够选择箭头指向的方向(远离坐标)或指向他们;我想要后者)。

在此示例中,我添加了geom_point()来说明我的数据的位置;半径是随机选择的,所以我想要箭头指向现在的点(而不是点,当然):

set.seed(1)
df       <- expand.grid(x = 1:10, y=1:10)
df$angle <- runif(100, 0, 2*pi)

ggplot(df, aes(x, y)) +
  geom_point()        +
  coord_equal()       +
  geom_spoke(aes(angle = angle), radius = 0.7, arrow=arrow(length = unit(0.2,"cm")))

enter image description here

1 个答案:

答案 0 :(得分:3)

arrow中的geom_spoke引用grid::arrow,其ends参数:

  

"last""first""both"中的一个,指示绘制箭头的行的哪一端。

由于您未明确设置ends参数,因此使用了默认值"last",即段末尾的箭头。

一个小例子:

p <- ggplot(df, aes(x = x, y = y, angle = angle)) +
  geom_point() 

ends的默认值:

# omitting the ends argument, like in your attempt:
p + geom_spoke(arrow = arrow(length = unit(0.2, "cm")), radius = 0.7)

# or writing out the ends argument explicitly:
p + geom_spoke(arrow = arrow(ends = "last", length = unit(0.2, "cm")), radius = 0.7)

在细分受众群开头的箭头,设置ends = "first"

p + geom_spoke(arrow = arrow(ends = "first"), radius = 0.7)

enter image description here