2016-06-10 12 views
0

Ich zeichne ein ggvis-Diagramm mit verschiedenen Farben und Linientypen, indem ich stroke und strokeDash parametriere. Die Farben zeigen nicht, was ich will, zB: Ich brauche "rot", "blau" und "grün", wobei die Farben "blau", "orange" und "grün" sind (Codebeispiel und Screenshot) sind unten).ggvis Farbliniendiagramme und entsprechende Legende

Ich muss auch Legende basierend auf der Farbe und Linientyp hinzufügen. Ich kann die Legende nicht hinzufügen, indem ich sowohl "color type" (stroke) als auch "line type" (strokeDash) kombiniere.

Unten ist ein Beispielcode, den ich arbeite.

mydf <- data.frame(xval = c(1:5),USA = c(11:15), Canada = c(21:25), UK = c(31:35)) 

mydf2 <- tidyr::gather(mydf, 'var', 'val', -xval) 

mydf2$mycol <- c(rep("Red",5), rep("Blue",5), rep("Green",5)) 
mydf2$mydash <- c(rep(5,5), rep(-1,5), rep(10,5)) 

myggv2 <- mydf2 %>% ggvis(x = ~xval, y = ~val, stroke = ~mycol,  
strokeDash := ~mydash) %>% layer_points(size := 100) %>% 
add_tooltip(function(d) { paste0("x:", d$xval, "<br>", "y:", d$val) }, "hover") %>% group_by(var) %>% 
layer_paths() %>% add_axis("x", title = "qtrs") %>% 
    add_axis("y", title = "MEV")%>% hide_legend("stroke") 
myggv2 

Hier ist der Screenshot des Diagramms. Screenshot

Dank

+0

Für die Hauptfarbe Frage fehlen Sie nur ': =', um Farben anstelle der Kartenfarben zu setzen. Siehe die Antwort [hier] (http://stackoverflow.com/questions/27454976/controlling-color-of-factor-group-in-ggvis-r). Wenn ich aber eine Legende haben wollte, könnte ich 'var' zuordnen und dann die Farben mit' scale_nominal' ändern. Momentan ist keine 'strokeDash'-Legende verfügbar. Siehe [hier] (https://github.com/rstudio/ggvis/issues/187). – aosmith

+0

Danke @aosmith für Ihren Vorschlag. Könnten Sie bitte den Code für das gleiche schreiben. Ich bin immer noch neu im GGVis Plotten. – user98180

Antwort

0

Sie können Farben in Ihrem Grundstück und Legende für diskrete Variablen ändern scale_nominal verwenden.

Bei dieser Vorgehensweise ordnen Sie die gewünschte Variable in der Legende innerhalb des Zeichencodes an und ändern dann die Standardfarben mit den von Ihnen gewählten Farben. Ich verwende var für die stroke Variable in diesem Beispiel.

mydf2 %>% 
    ggvis(x = ~xval, y = ~val, stroke = ~var,  
      strokeDash := ~mydash) %>% 
    layer_points(size := 100) %>% 
    add_tooltip(function(d) { paste0("x:", d$xval, "<br>", "y:", d$val) }, "hover") %>% 
    group_by(var) %>% 
    layer_paths() %>% 
    add_axis("x", title = "qtrs") %>% 
    add_axis("y", title = "MEV") %>% 
    scale_nominal("stroke", label = "Country", range = unique(mydf2$mycol)) 

enter image description here

Beachten Sie, dass ggvis zu diesem Zeitpunkt keine strokeDash Legende unterstützt. Siehe this open github issue.