2015-01-27 4 views
-1

У меня есть этот набор данныхУпорядочивание подгруппы в ggplot

data<-read.table("http://pastebin.com/raw.php?i=Vb8S91LX", header=TRUE) 

Когда я построить их с помощью ggplot, ось Х подгруппа автоматически расположены как GS, i_GS и Nor для каждой переменной х.

код я использую

ggplot(data, aes(x=gene, y=value,fill=as.factor(group))) + 
    geom_bar(stat='identity', position='dodge') + 
    geom_errorbar(aes(ymin=value, ymax=value+std),position=position_dodge(0.9), width=.2) + 
    scale_fill_grey() + 
    theme_bw() + 
    xlab("gene symbol")+ 
    ylab("value") + 
    theme(text = element_text(size=20, face="bold"), 
    axis.text.x = element_text(vjust=2)) 

Мой вопрос: Как мог я сторнировать их «я имею в виду подгруппу не ось X», так что я мог бы получить их как Nor, i_GS, GS?

данных

data <- structure(list(gene = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 
8L, 9L, 10L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 1L, 2L, 
3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L), .Label = c("C3", "C4A", "C4B", 
"C5", "C6", "C7", "C8A", "C8B", "C8G", "C9"), class = "factor"), 
    group = structure(c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L), .Label = c("GS", "i_GS", "Nor"), class = "factor"), 
    value = c(149L, 43L, 19L, 0L, 0L, 0L, 0L, 0L, 0L, 15L, 192L, 
    68L, 67L, 51L, 14L, 13L, 0L, 9L, 7L, 41L, 407L, 70L, 71L, 
    170L, 45L, 47L, 19L, 43L, 24L, 125L), std = c(26L, 17L, 33L, 
    0L, 0L, 0L, 0L, 0L, 0L, 1L, 51L, 3L, 5L, 45L, 12L, 11L, 0L, 
    8L, 6L, 29L, 73L, 6L, 6L, 84L, 16L, 30L, 17L, 30L, 10L, 2L 
    )), .Names = c("gene", "group", "value", "std"), class = "data.frame", row.names = c(NA, 
-30L)) 
+0

Этот звук, как будто вам нужно определить уровни вашей переменной 'group', см.'? Factor', в противном случае это график в алфавитном порядке. У вас есть поиск по SO об изменении порядка переменных в ggplot - есть много примеров – user20650

+1

Я добавил код, спасибо – Samehmagd

+0

Измените «фактор» уровень данных группы $ group <- factor (data $ group, levels = c («Nor», «i_GS», «GS»)), а затем измените 'fill = group' на ваш вызов' ggplot' – user20650

ответ

0

Просто добавьте это перед ggplot():

data$group <- factor(data$group, levels = c("Nor", "i_GS", "GS")) 

Идея в том, что ggplot читает из факторов, как они расположены в кадре данных. Следовательно, вам необходимо изменить коэффициент в кадре данных, если вы хотите увидеть их визуально по-разному.

+0

A. Val ,,, К сожалению, добавление scale_x_discrete (пределы = c ("Nor", "i_GS", "GS")) не работает – Samehmagd

+0

Ну, это был дикий выстрел, прежде чем у меня появился шанс увидеть ваш код. –

+0

Это не дает ответа на вопрос. Чтобы критиковать или запросить разъяснения у автора, оставьте комментарий ниже своего сообщения - вы всегда можете прокомментировать свои собственные сообщения, и как только у вас будет достаточно [репутации] (http://stackoverflow.com/help/whats-reputation), вы будете быть в состоянии [прокомментировать любое сообщение] (http://stackoverflow.com/help/privileges/comment). – Werner

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