2017-12-18 4 views
3

Ich arbeite derzeit mit der ggridges-Bibliothek, um ein 'Joychart' zu erstellen. Ich schrieb dies:Zyklischer Fehler mit ggrids in R (joyplot)

data3 %>% 
    mutate(ftFct = fct_rev(as.factor(ft_newnum))) %>% 
    ggplot(aes(y = ftFct)) + 
    geom_density_ridges(aes(x = ft, fill = paste(ftFct, rep)), 
         alpha = .8, color = "white", from = 0, to = 100) + 
    labs(x = "Feeling Themometer Responses (%)", 
    y = " ", 
    title = "Republican vs Democratic Views Towards...", 
    subtitle = "Analysis unit: students (n = 595)") + 
    scale_y_discrete(expand = c(0.01, 0)) + 
    scale_x_continuous(expand = c(0.01, 0)) + 
    scale_fill_cyclical(breaks = c("2 0", "2 1"), 
         labels = c(`2 0` = "Democrat", `2 1` = "Republican"), 
         values = c("#8080ff", "#ff8080", "#0000ff", "#ff0000"), 
         name = "Political Affiliation", guide = "legend") + 
    theme_ridges(grid = FALSE) 

... das wird mir diese Zahl:

enter image description here

Das ist genau das, was ich will - perfekt Formatierung, und jede Zeile wechselt zwischen dunklen und hellen Farben, die Bereitstellung etwas Kontrast und erhöhte Lesbarkeit.

Als nächstes beschreibe ich die Y-Achse Variable, so dass wir wissen, was wir sehen. Ich beschriften 'ft_newnum' als solche:

data3$ft_newnum <- factor(data3$ft_newnum, 
         levels = c(2,3,4,5,6,7,9,11,12, 13, 14, 15), 
         labels = c("Donald Trump", "Christian fundamentalists", "Elites", 'Republicans', 'Denison Republicans', 'Denison Greeks', 'Denison Varsity Athlete','Hillary Clinton', 'Denison Democrats', 'Democrats', 'Bernie Sanders', 'Weinberg')) 

dann den Code bearbeiten, diese Änderung zu übernehmen: diese Zahl

data3 %>% 
    mutate(ftFct = fct_rev(as.factor(ft_newnum))) %>% 
    ggplot(aes(y = ftFct)) + 
    geom_density_ridges(aes(x = ft, fill = paste(ftFct, rep)), 
         alpha = .8, color = "white", from = 0, to = 100) + 
    labs(x = "Feeling Themometer Responses (%)", 
     y = " ", 
     title = "Republican vs Democratic Views Towards...", 
     subtitle = "Analysis unit: students (n = 595)") + 
    scale_y_discrete(expand = c(0.01, 0)) + 
    scale_x_continuous(expand = c(0.01, 0)) + 
    scale_fill_cyclical(breaks = c("Donald Trump 0", "Donald Trump 1"), 
         labels = c(`Donald Trump 0` = "Democrat", `Donald Trump 1` = "Republican"), 
         values = c("#8080ff", "#ff8080", "#0000ff", "#ff0000"), 
         name = "Political Affiliation", guide = "legend") + 
    theme_ridges(grid = FALSE) 

Dieser Code Stellplätze:

enter image description here

Es ist fast perfekt, aber das Problem ist, der Wechsel zwischen hellen und dunklen Farben ist ausgeschaltet. Die ersten beiden Linien sind dunkel gefärbt, gefolgt von zwei hellen Linien. Ich muss die Etiketten behalten, aber auch den genauen zyklischen Wechsel behalten, wie in der ersten Abbildung zu sehen ist.

Irgendwelche Ideen? Vielen Dank!

+1

Können Sie ein reproduzierbares Beispiel geben? Es ist viel wahrscheinlicher, dass Sie auf diese Weise eine gute Antwort erhalten. – Axeman

Antwort

2

Ah, ich habe es herausgefunden. Anstatt die Variable 'ft_newnum' zu überschreiben, erstellen Sie eine neue Variable (ft_newnum2).

data3$ft_newnum2 <- factor(data3$ft_newnum, 
         levels = c(2,3,4,5,6,7,9,11,12, 13, 14, 15), 
         labels = c("Donald Trump", "Christian fundamentalists", "Elites", 'Republicans', 'Denison Republicans', 'Denison Greeks', 'Denison Varsity Athlete','Hillary Clinton', 'Denison Democrats', 'Democrats', 'Bernie Sanders', 'Weinberg')) 

ft_num2 wird verwendet, um die Y-Achse einzurichten, während die ursprüngliche ft_num bleibt und wird verwendet, um den Plot zu füllen.

data3 %>% 
    mutate(ftFct = fct_rev(as.factor(ft_newnum2))) %>% 
    ggplot(aes(y = ftFct)) + 
    geom_density_ridges(aes(x = ft, fill = paste(ft_newnum, rep)), 
         alpha = .8, color = "white", from = 0, to = 100) + 
    labs(x = "Feeling Themometer Responses (%)", 
     y = " ", 
     title = "Republican vs Democratic Views Towards...", 
     subtitle = "Analysis unit: students (n = 595)") + 
    scale_y_discrete(expand = c(0.01, 0)) + 
    scale_x_continuous(expand = c(0.01, 0)) + 
    scale_fill_cyclical(breaks = c("2 0", "2 1"), 
         labels = c(`Donald Trump 0` = "Democrat", `Donald Trump 1` = "Republican"), 
         values = c("#8080ff", "#ff8080", "#0000ff", "#ff0000"), 
         name = "Political Affiliation", guide = "legend") + 
    theme_ridges(grid = FALSE) + 
    theme(legend.position="bottom") 

enter image description here