динамическое построение с помощью ggplot2 - PullRequest
0 голосов
/ 26 марта 2011

Я новичок в ggplot и пытаюсь автоматически отобразить несколько подмножеств данных в разные PDF-файлы, но я вижу ошибку и мне нужна ваша помощь.

это мой код:

library(ggplot2)
t=read.table("../All.txt",stringsAsFactors=FALSE)
names( t ) <- c("A","C","G","T","(A-T)/(A+T)","(G-C)/(G+T)","(A+T)/(G+C)","accession","Phylum","Order","Class")
    phy=unique(c(t$Phylum))
    for (x in phy){ 
    if(x=="???:???")
    {
        x="unknown"
    }
    pdf(paste(x,".pdf") , width=25, height=15)
    test<-subset(t, Phylum==x)
    dat <- melt(test, measure=c("A", "C" , "G" , "T" , "(A-T)/(A+T)", "(G-C)/(G+T)","(A+T)/(G+C)"))
    ggplot(dat, aes(Class,value , color=variable))  + geom_boxplot() +geom_jitter()   +  facet_grid(variable~., scales="free_y")
    }

ошибка:

argument implies differing number of row: 0,1

как я могу исправить эту ошибку? спасибо за вашу помощь

1 Ответ

0 голосов
/ 27 марта 2011

Я удалил свой оригинальный ответ и начал новый:

t <- structure(list(A = 0.286945, C = 0.322006, G = "0.1473610.2436880.081520-0.4466031.130529NC_000846", T = "Chordata", `(A-T)/(A+T)` = "Rheiformes", `(G-C)/(G+T)` = "Aves", `(A+T)/(G+C)` = 0.39562, accession = "0.1334170.0917400.3792240.021160-0.0884933.441356NC_000857", Phylum = "Arthropoda", Order = "Diptera", Class = "Insecta"), .Names = c("A", "C", "G", "T", "(A-T)/(A+T)", "(G-C)/(G+T)", "(A+T)/(G+C)", "accession", "Phylum", "Order", "Class"), class = "data.frame", row.names = c(NA, -1L))

Если я запускаю ваш код, он запускается без предупреждающего сообщения, хотя график не был сохранен, поскольку не было указано dev.off в конце цикла. Вы можете загрузить свой файл данных, например, в. Pastebin .


ОБНОВЛЕНИЕ: на основе файла демонстрационных данных

Спасибо за загрузку образца набора данных! Я запускаю модифицированную версию вашего кода (чтобы сохранить графики в формате PDF), которая запускается без ошибок / предупреждений:

t=read.table("txt-part.txt", stringsAsFactors=FALSE)
names( t ) <- c("A","C","G","T","(A-T)/(A+T)","(G-C)/(G+T)","(A+T)/(G+C)","accession","Phylum","Order","Class")
phy=unique(t$Phylum)

for (x in phy){ 
    if(x != "???:???") {
    test<-subset(t, Phylum==x)
    dat <- melt(test, measure=c("A", "C" , "G" , "T" , "(A-T)/(A+T)", "(G-C)/(G+T)","(A+T)/(G+C)"))
    p <- ggplot(dat, aes(Class,value , color=variable))  + geom_boxplot() +geom_jitter()   +  facet_grid(variable~., scales="free_y")
    ggsave(paste(x,".pdf"), p, width=25, height=15)
    }}

У меня есть 2 файла PDF, как и ожидалось в вашем наборе данных. Если он не работает на всем наборе данных, я понятия не имею о проблеме, не проверив исходный файл данных. Может быть, другие делают! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...