2015-12-04 5 views
9

Ich verwende das plotly Paket und ich versuche, eine horizontale Linie zu einem Diagramm hinzuzufügen. Gibt es eine Möglichkeit, es plotly zu tun?Horizontale/Vertikale Linie in plotly

library(plotly) 

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

ggplotly(p) 

Aber ich kann dieses Grundstück zu einem bestehenden plotly nicht hinzufügen:

Es kann wie unten gezeigt mit ggplot2 und die ggplotly Funktion erfolgen.

Auch die Achse meiner Diagramme sind nicht festgelegt, so dass es schwierig (aber nicht unmöglich) wäre, nur ein x- und y-Koordinatensystem für eine horizontale Linie auszuarbeiten, aber ich würde nur eine automatisch hinzufügen.

Ich habe in die y0 und dy Argumente geschaut, aber ich kann nicht scheinen, um den Code für diese zu bekommen, entweder. Ich bin nicht ganz sicher, was sie genau machen, aber ich denke, dass sie vielleicht das sind, wonach ich suche? Ich kann keine guten Beispiele ihrer Verwendung finden.

Antwort

7

Sie können Linien ohne ggplot2 mit einer "Scatter" -Spur mit dem Modus "Linien" zeichnen. Um eine horizontale/vertikale Linie zu machen, fixieren die entsprechenden x/y-Werte:

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

Mehr als wahrscheinlich, werden Sie so etwas wie dies tun wollen:

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

danke. Wie kann ich vermeiden, dass die hinzugefügte vertikale Linie in der Legende angezeigt wird? – RockScience

+0

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

9

Alternativ könnten Sie ein hinzufügen Form (dh Linie) unter Layout(). Im folgenden Beispiel wird eine vertikale Linie hinzugefügt:

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