2016-11-30 4 views

Antwort

1

Für eine wöchentliche Vis-Wettbewerb vor einiger Zeit, erstellte ich einige Diagramme wie folgt. Ich denke, der allgemein akzeptierte Begriff ist jetzt "Connected Scatterplot".

Hier ist das Skelett plotly Code ich verwendet.

plot_ly(
    df, 
    x = x_var, 
    y = y_var, 
    group = group_var, 
    mode = "markers") %>% 
    add_trace(
    x = x_var, 
    y = y_var, 
    xaxis = list(title = ""), 
    yaxis = list(title = ""), 
    group = group_var, 
    line = list(shape = "spline"), 
    showlegend = FALSE, 
    hoverinfo = "none") 

Sie am github repo for my submission aussehen kann, die sowohl für ggplot und plotly den Code enthält, um angeschlossene Scatterplots zu erzeugen.

1

Mit ggplot2:

geom_path() verbindet die Beobachtungen in der Reihenfolge, in der sie in den Daten erscheinen. geom_line() verbindet sie in der Reihenfolge der Variablen auf der x-Achse.

vom ggplot Handbuch Seite genommen: http://docs.ggplot2.org/current/geom_path.html

Sie auch geom_curve ausprobieren können und geom_segment wenn Sie mehr Kontrolle wünschen.

0

Dank @Bishop war ich in der Lage, etwas zu formulieren, das meinem idealen Orbit Chat sehr nahe kommt. Ich habe einige Diagrammannotationen für das Anfangs- und Enddatum und eine Beschriftung für die Richtung, in der die optimale Lösung ist, eingefügt.

max_date <- final_data_grp[which.max(final_data_grp$week_num), ] 
min_date <- final_data_grp[which.min(final_data_grp$week_num), ] 

end <- list(
    x = max_date$AreaWOH, 
    y = max_date$SLevel, 
    text = paste('End', max_date$MondayDate), 
    xref = "x", 
    yref = "y" 
) 

start <- list(
    x = min_date$AreaWOH, 
    y = min_date$SLevel, 
    text = paste('Start', min_date$MondayDate), 
    xref = "x", 
    yref = "y" 
) 

best_label = list(
    x = min(final_data_grp$AreaWOH), 
    y = max(final_data_grp$SLevel), 
    text = 'Best Scenario', 
    showarrow = FALSE, 
    bordercolor='#c7c7c7', 
    borderwidth=2, 
    borderpad=4, 
    bgcolor='#ff7f0e', 
    opacity=.7 
) 

plot_ly(
    final_data_grp, 
    x = AreaWOH, 
    y = SLevel, 
    group = MondayDate, 
    showlegend = FALSE, 
    marker = list(size = 8, 
       color = 'black', 
       opacity = .6)) %>% 
    add_trace(
    x = AreaWOH, 
    y = SLevel, 
    line = list(shape = "spline"), 
    hoverinfo = "none", 
    showlegend = FALSE) %>% 
    layout(annotations = list(start, end, best_label))