2014-06-26 4 views
0

Я новичок в R и имею несколько проблем с использованием ggplot2.Boxplot с несколькими переменными x

Это пример моих данных (подмножество большего набора данных):

df <- 
structure(list(logpvalue = c(22.36, 6.93, 16.78, 1.78, 17.75, 
20.99, 21.03, 9.19, 15.01, 22.25, 13.4, 6.47, 1.34, 13.4, 3.21, 
0.37, 0.5, 0.12, 1.8, 0.71, 1.15, 6.73, 0.12, 6.97, 0.64, 9.85, 
1.45, 1.67, 2.6, 1.8, 1.35, 4.69, 0.37, 1.91, 0.31, 0, 2.45, 
1.68, 2.31, 1.35, 6.48, 4.68), SNP = structure(c(1L, 7L, 6L, 
5L, 11L, 1L, 9L, 5L, 8L, 11L, 7L, 5L, 8L, 11L, 1L, 7L, 1L, 4L, 
2L, 3L, 10L, 7L, 1L, 4L, 2L, 3L, 10L, 4L, 2L, 3L, 10L, 4L, 2L, 
3L, 10L, 4L, 2L, 3L, 7L, 9L, 5L, 1L), .Label = c("rs10244", "rs10891244", 
"rs10891245", "rs11213821", "rs12296076", "rs138567267", "rs45615536", 
"rs6589218", "rs7103178", "rs7127721", "rs7944895"), class = "factor"), 
X173 = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L), .Label = c("het", "hom"), class = "factor")), .Names = c("logpvalue", 
"SNP", "X173"), class = "data.frame", row.names = c(NA, -42L)) 

Я хочу построить в boxplot из logpvalue на оси у, с SNP на оси х, но с каждым SNP также в зависимости от того, является ли пациент het или hom для X173. Поэтому из этих данных я бы представил 4 коробки на моем ящике.

Если возможно, я также хотел бы включить отдельные точки данных (наложение точек на ящике) с джиттером.

Это обычный код, который я хотел бы использовать для boxplot из logpavlue против SNP:

qplot(logpvalue, SNP, data = mydata, geom="boxplot") 
+ geom_jitter(position=position_jitter(w=0.1, h=0.1)) + theme_bw() 

Как добавить дополнительную переменную х в этом коде?

+2

Пожалуйста, ваши данные [воспроизводимая] (http://stackoverflow.com/questions/5963269/how -to-make-a-great-r-воспроизводимый пример) и читайте о [box plot] (http://en.wikipedia.org/wiki/Box_plot) – zx8754

+0

Спасибо за ответ - я попытался сделать свой воспроизведение данных однако его большой набор данных, и я не хочу вставлять все свои данные в Интернете. Не знаю, какова ваша точка зрения на ящики - я знаю, что они предназначены для нескольких точек данных, которые не являются индивидуальными, как могли бы привести данные предыдущего примера. Я почти не понимаю сценарий, поэтому я извиняюсь за свою неумелость! – user3778714

ответ

0

Попробуйте это:

boxplot(df$logpvalue~paste(df$SNP,df$X173)) 

Или с помощью ggolot2:

library(ggplot2) 

ggplot(data=df,aes(SNP,logpvalue,colour=SNP)) + 
    geom_boxplot() + 
    geom_jitter() + 
    facet_grid(.~X173) 

enter image description here

Смежные вопросы