2013-07-30 9 views
2

플롯하려고하는 데이터에서 각 샘플은 여러 그룹 중 하나에 속하며 각 그리드에는 플롯됩니다. 각 샘플의 ID 특성 인 시퀀스 수가 증가함에 따라 정렬 될 각 샘플에 대해 누적 가로 막대 플롯을 플롯합니다.ggplot2 누적 막대 그래프, 서식 및 그리드

현재, (어떤 임의의 데이터) 줄거리는 다음과 같습니다 : (I 이미지에 필요한 10 담당자가 없기 때문에, 나는 여기에 연결하고) http://i.stack.imgur.com/A9hr2.png

몇 가지 내가있다 성취해야한다. 그리고 나는 어디에서 시작해야할지 모른다.

  1. 막대를 해당 nseqs 값에 배치하지 말고 오름차순 nseqs 순서로 나란히 배치하십시오.
  2. 각 눈금이 동일한 눈금을 갖기를 원하지 않습니다. 모든 것이 꼭 맞게 있어야합니다.

facet_grid가 free_x로 스케일 및 크기를 설정하려고했지만 사용되지 않은 인수 오류가 발생합니다. 이것은 저울 라이브러리가 제대로로드되지 못했다는 사실과 관련이 있다고 생각합니다. 플로팅 다루는

코드 :

ggfdata <- melt(fdata, id.var=c('group','nseqs','sample')) 
p <- ggplot(ggfdata, aes(x=nseqs, y=value, fill = variable)) + 
     geom_bar(stat='identity') + 
     facet_grid(~group) + 
     scale_y_continuous() + 
     opts(title=paste('Taxonomic Distribution - grouped by',colnames(meta.frame)[i])) 

답변

0

이 시도가 :

update.packages() 
## I'm assuming your ggplot2 is out of date because you use opts() 
## If the scales library is unavailable, you might need to update R 

ggfdata <- melt(fdata, id.var=c('group','nseqs','sample')) 
ggfdata$nseqs <- factor(ggfdata$nseqs) 
## Making nseqs a factor will stop ggplot from treating it as a numeric, 
## which sounds like what you want 

p <- ggplot(ggfdata, aes(x=nseqs, y=value, fill = variable)) + 
    geom_bar(stat='identity') + 
    facet_wrap(~group, scales="free_x") + ## No need for facet_grid with only one variable 
    labs(title = paste('Taxonomic Distribution - grouped by',colnames(meta.frame)[i])) 
+0

이 완벽하게 잘되었다! 이전 버전의 R을 실행하고있었습니다. nseqs 열을 요인으로 변경하면 필자가 필요로하는 것이 정확히 수행되었습니다. 플롯이 훨씬 더 멋지게 보입니다. 링크 됨 : http://i.imgur.com/PilFunl.png 감사! – Nik

+0

하지만 여전히 문제가 있습니다. 동일한 nseq를 가진 샘플이있을 때, 병합되어 함께 쌓입니다. 이것을 피할 수있는 방법이 있습니까? – Nik

+0

@Nik 두 가지 이유는 1. 'facet_grid'로 다시 전환하고 보통 여러 샘플이있는 경우 잘 작동하는 'facet_grid (sample ~ group)'을 사용하는 것입니다 ('sample'이 중요한 요소인지 확인하십시오!) 2. 새로운 컬럼'ggfdata $ nseqs.sample <- with (ggfdata, paste0 (nseqs, ".", "sample"))'을 만들고 그것을'nseqs' 대신에 사용하십시오. – Gregor

관련 문제