أضف ملصقات المجموعة الفرعية إلى مؤامرة الارتعاش في GGPLOT2

StackOverflow https://stackoverflow.com/questions/2119750

  •  22-09-2019
  •  | 
  •  

سؤال

لدي ما يقرب من boxplot مثل jitter-plot:

dt <- rbind(se,cb,cb.se)
qplot(ds, size, data=dt, geom="jitter", colour=root, facets = test ~ .)

plot

أحب أن أضع علامة ملخص لكل مجموعة في منتصف المؤامرة - على سبيل المثال مجاميع الحجم هنا:

 aggregate(list(size=dt$size), list(dt$ds, dt$test), sum)

   Group.1  Group.2   size
1     b217       se   9847
2      c10       se  97296
3     c613       se  21633
4       c7       se 207540
...

لقد حاولت استخدام + geom_text(aes(x=ds, y=128, label=sum(size)), size=2) لإضافة ملصقات ، لكنني أحصل على نفس التسمية في كل موقف - كيف يمكنني الحصول على مجموع هذا القسم من البيانات؟

تعديل:هنا حيث أنا الآن - ربما سأذهب في الاتجاه الخاطئ فقط

data <- rbind(se,cb,cb.se)
labels <-ddply(data, c("ds", "test"), function(df) sum(df$size))
ggplot(data=data, aes(x=ds)) +
  geom_jitter(aes(y=size, colour=root)) +
  geom_text(data=labels, aes(x=ds, y=600, label=V1), size=3) +
  facet_wrap(test ~ .)

هذا الرمز لا يعمل - أحصل على undefined columns selected خطأ ... في مكان ما. ربما يكون ذلك بسبب المضاعفات data= أقسام؟

هل كانت مفيدة؟

المحلول

نظرًا لأنك لا تقدم عينة من البيانات ، فسوف أقوم بإظهار حل باستخدام بيانات عشوائية.

set.seed(1)
n <- 100
dat <- data.frame(
    ds = sample(paste("x", 1:8, sep=""), n, replace=TRUE),
    size = runif(n, 0, 250),
    root = sample(c(TRUE, FALSE), n, replace=TRUE),
    test = sample(c("se", "cb", "cb.se"), n, replace=TRUE) 
)


head(dat)
  ds      size  root  test
1 x3 163.68098  TRUE cb.se
2 x3  88.29932  TRUE    se
3 x5  67.56504 FALSE    cb
4 x8 248.17102  TRUE    cb
5 x2 158.37332  TRUE    cb
6 x8  53.30203 FALSE cb.se

p <- ggplot(dat, aes(x=ds, y=size)) + 
  geom_jitter(aes(colour=root)) + 
  facet_grid(test~.) 

قم بإنشاء إطار البيانات الذي يحتوي على بيانات التسمية. لاحظ استخدام summarize. هذا يروي ddply لإنشاء عمود جديد إلى data.frame

labels <- ddply(dat, .(ds, test), summarize, size=round(sum(size), 0))
head(labels)
  ds  test size
1 x1    cb  193
2 x1 cb.se  615
3 x1    se  274
4 x2    cb  272
5 x2 cb.se  341
6 x2    se 1012

p + geom_text(aes(x=ds, label=size, y=128), data=labels, size=2) 

enter image description here

نصائح أخرى

نلقي نظرة هنا. قد يكون مفيدًاإضافة ملصقات مباشرة إلى مؤامرات GGPLOT2

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top