2016-04-07 4 views
0

Ich versuche lokal Dutzende von Linien in einer glänzenden App zu zeichnen. Nachdem die Linien gezeichnet sind, würde ich gerne in der Lage sein, ihre Stile ohne Neuzeichnen zu ändern?Plotly R: Wie aktualisiere ich Linienstil ohne Neuzeichnen (lokal)

Im folgenden Beispiel sind der Einfachheit halber nur 6 Spuren (Linien) vorhanden. Ich mag die Opazität der ersten und dritten Zeile nur ändern, ohne Nachziehen nichts:

library(plotly) 
plot_ly(mtcars, x=mpg, y=wt, group=carb) 
style(p = last_plot(), opacity=0.1) #Only modifies first line & complains : You've referenced non-existent traces 
style(p = last_plot(), opacity=0.1, traces = 3) #Does not work at all 
Warning: You've referenced non-existent traces 
Error in p$data[[max(traces)]] : subscript out of bounds 

Wie Stil() verwenden?

suchte ich viel, konnte aber keine Dokumentation

Dank für Ihre Hilfe

Grüße

Antwort

1

Ich denke, style() soll die Arbeit mit so etwas finden:

p <- plot_ly(x = seq(0, 8), y = rnorm(8), name = "Blue Trace") %>% 
     add_trace(y = rnorm(8), name = "Orange Trace") %>% 
     add_trace(y = rnorm(8), name = "Green Trace") 
p 
pp <- style(p = last_plot(), opacity=0.1, traces = 1) 
pp 
ppp <- style(pp = last_plot(), opacity=0.1, traces = 2) 
ppp 
pppp <- style(ppp = last_plot(), opacity=0.1, traces = 3) 
pppp 
+0

Danke. Offensichtlich erzeugt dein Beispiel 3 Spuren und mein Beispiel oben nicht. In meinem Fall muss ich viele Zeilen gleichzeitig mit einem data.frame zeichnen. Wenn ich sie add_trace() hinzufüge, wäre das sehr langsam. Daher suche ich immer noch nach einer Lösung, die mit meinem obigen Beispiel funktionieren kann. Lustig, dass style() nicht dokumentiert ist. – Servet

0

Vielleicht hilft das? Sie sollten in der Lage sein, in jede der Kurven zu springen und jede Eigenschaft relativ schnell zu ändern/hinzuzufügen.

library(plotly) 
p <- plot_ly(mtcars, x=mpg, y=wt, group=carb) 
p <- plotly_build(p) 
p$data[[1]]$opacity = 0.1 
p$data[[3]]$opacity = 0.1 

p 
+0

Sieht gut aus. Intern: Zeichnet sich das Ganze neu oder verändert lediglich vorhandene Spuren? Da es ein leichtes Beispiel ist, schwer zu sagen. – Servet

+0

Es ändert Daten/Eigenschaften von vorhandenen Ablaufverfolgungen. Damit das Diagramm jedoch tatsächlich auf dem Bildschirm aktualisiert wird, müssen Sie es erneut grafisch darstellen. Das Objekt, das Sie von plotly build erhalten, ist im Wesentlichen eine Liste, die intern an plotly.js übergeben wird. Sie müssen also den aktuellen Plot aktualisieren, damit die Änderungen angezeigt werden. Zumindest verstehe ich es so. – royr2