2016-07-21 14 views
2

Ich bin ziemlich neu in R, aber ich versuche, eine facet_grid mit ggplot Paket in R und, für eine bessere Datenvisualisierung, würde ich gerne den Prozentsatz der Werte in jedem einfügen Quadranten für die Spalte groupings, wie das Bild unten:Einfügen Prozentsatz von Werten in ggplot

http://i.stack.imgur.com/Zt7ev.png

können eine oder andere sein, in jedem Quadranten oder in der Legende.

Mein Code ist dies eine unter

ggplot(df1_final,aes(x=revenue,y=visits,col=groupings)) + 
    geom_jitter(alpha=I(1/2)) + 
    xlim(c(0,20000)) + 
    facet_grid(group_lvl_1_visits ~ group_lvl_1_revenue) 

mir jemand könnte auf diesem helfen?

EDIT: Beide Lösungen haben mir sehr geholfen, sehr gute.

+1

Willkommen bei Stack-Überlauf! [Wie man ein großartiges reproduzierbares Beispiel macht?] (Http://stackoverflow.com/questions/5963269) – zx8754

+0

mit einem 'dput (df1_final)' eingefügt zu Ihrem Beispiel würde helfen, dass Leute Ihnen helfen. – hrbrmstr

Antwort

3

Hier ist eine Möglichkeit, es zu tun:

library(ggplot2) 
ggplot(mpg, aes(displ, hwy)) + 
    geom_point() + 
    facet_wrap(~class, nrow = 4) -> 
    p 
p + geom_text(
    data = setNames(as.data.frame(prop.table(table(mpg$class))),c("class", "lab")), 
    mapping = aes(label = scales::percent(lab)), 
    x = 4, 
    y = 40 
) 

enter image description here

oder für facet_grid:

p <- ggplot(mpg, aes(displ, cty)) + geom_point() 
p <- p + facet_grid(drv ~ cyl) 
p + geom_text(
    data = setNames(as.data.frame(prop.table(table(mpg$drv, mpg$cyl)), stringsAsFactors = F), c("drv","cyl","lab")), 
    mapping = aes(label = scales::percent(lab)), 
    x=4.5, 
    y=30 
) 

enter image description here

+1

OP verwendet 'facet_grid()' – hrbrmstr

+0

Ah ich sehe .. argh! – lukeA

+1

super saubere Lösung für den 'facet_wrap()' Anwendungsfall, tho. Vielleicht möchten Sie es hier behalten – hrbrmstr

2

Hier ist ein tidyverse + Label-in-Legende Lösung:

library(ggplot2) 
library(dplyr) 
library(scales) 

group_by(mpg, cyl, drv) %>% 
    mutate(color=sprintf("%s-%s",cyl,drv)) %>% 
    ungroup(mpg) -> mpg 

gg <- ggplot(mpg, aes(displ, cty)) 
gg <- gg + geom_point(aes(color=color)) 
gg <- gg + facet_grid(drv ~ cyl) 

count(mpg, color) %>% 
    ungroup() %>% 
    mutate(pct=percent(n/sum(n)), 
     lab=sprintf("%s (%s)", color, pct)) -> pct_df 


gg <- gg + scale_color_discrete(name="Title", labels=pct_df$lab) 
gg 

enter image description here

Verwandte Themen