2016-12-09 5 views
0

У меня есть данные, как:многогранности с использованием ggplot2

2L  A=>C 6.2 
2L  A=>G 13.6 
2L  A=>T 6.7 
2L  C=>A 5.3 
2L  C=>G 3.8 
2L  C=>T 12.6 
2L  G=>A 14.1 
2L  G=>C 4.3 
2L  G=>T 5.5 
2L  T=>A 10.3 
2L  T=>C 12.6 
2L  T=>G 5 
2R  A=>C 5.1 
2R  A=>G 11.2 
2R  A=>T 9.4 
2R  C=>A 4 
2R  C=>G 4 
2R  C=>T 11.6 
2R  G=>A 17 
2R  G=>C 4 
2R  G=>T 6.9 
2R  T=>A 9.1 
2R  T=>C 12 
2R  T=>G 5.8 

И я пытаюсь сделать отдельные штриховые графики для каждого хромового (data[,1]). Я могу построить его на том же участке:

library(ggplot2) 

snps<-read.table("new.txt", header = FALSE) 
chroms<-snps[,1] 
trans<-snps[,2] 
freq<-snps[,3] 


ggplot(snps, aes(x = trans, y = freq, group = chroms, fill = chroms)) + geom_bar(position="dodge",stat="identity") 

enter image description here

Однако я хотел бы, чтобы иметь возможность построить каждый отдельно хром. Когда я пытаюсь использовать facet_grid я получаю следующее сообщение об ошибке:

ggplot(snps, aes(x = trans, y = freq, group = chroms, fill = chroms)) + 
geom_bar(position="dodge",stat="identity") + facet_grid(chroms ~ .) 

--- 

Error in combine_vars(data, params$plot_env, rows, drop = params$drop) : 
At least one layer must contain all variables used for facetting 

Как правильно использовать facetting в этом примере?

ответ

1

Я не думаю, что вы должны создать дополнительные данные для ваших переменных. Это должно работать:

snps<-read.table("new.txt", header = FALSE) 
colnames(snps)=c("chroms","trans","freq") 
ggplot(snps, aes(x = trans, y = freq, group = chroms, fill = chroms)) + geom_bar(position="dodge",stat="identity")+facet_grid(chroms~.) 

Это дает мне: enter image description here

+0

Я не понимаю, почему это работает, но это делает! – fugu

1

facet_wrap() альтернатива:

df <- read.table(text="chroms trans freq 
2L  A=>C 6.2 
2L  A=>G 13.6 
2L  A=>T 6.7 
2L  C=>A 5.3 
2L  C=>G 3.8 
2L  C=>T 12.6 
2L  G=>A 14.1 
2L  G=>C 4.3 
2L  G=>T 5.5 
2L  T=>A 10.3 
2L  T=>C 12.6 
2L  T=>G 5 
2R  A=>C 5.1 
2R  A=>G 11.2 
2R  A=>T 9.4 
2R  C=>A 4 
2R  C=>G 4 
2R  C=>T 11.6 
2R  G=>A 17 
2R  G=>C 4 
2R  G=>T 6.9 
2R  T=>A 9.1 
2R  T=>C 12 
2R  T=>G 5.8", header=TRUE, stringsAsFactors=FALSE) 


ggplot(df, aes(trans, freq, group=chroms, fill=chroms)) + 
    geom_bar(position="dodge", stat="identity") + 
    facet_wrap(~chroms) + 
    scale_y_continuous(expand=c(0,0)) + 
    ggthemes::scale_fill_tableau() + 
    theme_minimal() + 
    theme(panel.grid.major.x=element_blank()) + 
    theme(panel.spacing=unit(2, "lines")) + 
    theme(legend.position="none") 

enter image description here

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