如何在R中的曲线图中添加垂直线,y变量为一个因子

时间:2017-05-25 13:15:25

标签: r plotly

我有一个data.frame,我在y轴上绘制一个值id,对x轴上的值t绘制另一个值s

library(plotly)
library(dplyr)

# create data.frame
df <- data.frame(id=c("a","b","c"),s=c(1,3,2),t=c(3,2,1))

# set order
levels <- df %>% 
arrange(s) %>% 
.$id #[1] a c b

# plot
df %>% 
mutate(id=factor(id, levels = levels)) %>%
plot_ly(x=~t,y=~id) %>% 
add_markers() 

这很好用。

enter image description here

但是我想添加一条垂直线,表示t的平均值,加权为s

line <- weighted.mean(df$t,df$s)

我无法找到正确的方法

TIA

1 个答案:

答案 0 :(得分:1)

为了防止Plotly使用分类值对y轴进行排序,您可以绘制多条显示为一行的行。

p <- add_lines(p, 
               x = rep(line, nrow(df)), 
               y = df$id)

enter image description here

library(plotly)
library(dplyr)

# create data.frame
df <- data.frame(id=c("a","b","c"),s=c(1,3,2),t=c(3,2,1))

# set order
levels <- df %>% 
  arrange(s) %>% 
  .$id #[1] a c b

# plot
p <- df %>% 
  mutate(id=factor(id, levels = levels)) %>%
  plot_ly(x=~t,y=~id) %>% 
  add_markers()

line <- weighted.mean(df$t,df$s)


p <- add_lines(p, 
               x = rep(line, nrow(df)), 
               y = df$id)
p