2015-12-04 78 views
9

我正在使用plotly包,我正在嘗試向圖中添加一條水平線。有沒有什麼方法可以使用情節?水平/垂直線的情節

它可以通過ggplot2ggplotly函數來完成,如下圖所示:

library(plotly) 

p <- ggplot() + 
    geom_hline(yintercept = 4) + 
    xlim(c(0,10)) + 
    ylim(c(0,10)) 

ggplotly(p) 

但我不能將它添加到現有的plotly情節。

此外,我的圖表軸不固定,所以僅僅爲水平線創建一個x和y座標系就很困難(但並非不可能),但我寧願自動添加一個。

我已經研究過y0和dy參數,但我似乎無法獲得這些工作的代碼。我不太確定他們究竟做了什麼,但我認爲他們可能是我要找的東西?我找不到他們使用的好例子。

回答

7

您可以使用模式爲「線條」的「散點」跡線繪製沒有ggplot2的線條。爲了使水平/垂直線,確定適當的x/y值:

plot_ly(x = c(4, 4), y = c(0, 10), mode = "lines") %>% 
    add_trace(x = c(3, 5), y = c(5, 5)) 

更可能的,你會想要做這樣的事情:

plot_ly(mtcars, x = mpg, y = disp, mode = "markers") %>% 
add_trace(x = c(20, 20), y= c(min(disp), max(disp)), mode = "lines") 
+0

謝謝。我怎樣才能避免在圖例中顯示添加的垂直線? – RockScience

+0

add_trace(...,showlegend = FALSE) – horsefeathers

9

或者,你可以添加一個佈局()下的形狀(即線)。以下示例添加一條垂直線:

p <- plot_ly(data, x = ~x.data, y = ~y.data, text = ~text.data, type = 'scatter', 
     mode = 'markers', marker = list(size = ~size.data, opacity= 0.5)) %>% 
    layout(shapes=list(type='line', x0= 0.2, x1= 0.2, y0=min(allyvalues), y1=max(allyvalues), line=list(dash='dot', width=1)), 
     title = 'This is the Title', 
     xaxis = list(title = "X-Axis", showgrid = TRUE), 
     yaxis = list(title = "Y-Axis", showgrid = TRUE)) 
p