2015-08-07 4 views
-4

У меня есть таблица, которые выглядят, как показано ниже,Нет слоев в участке (R)

chr1 500  15  0.502 na 
chr1 1000 21  0.641 0.019704955 
chr1 1500 21  0.621 0.016777844 
chr1 2000 22  0.534 na 
chr1 2500 35  0.698 0.028712731 
chr2 4500 2  0.371 na  
chr2 5000 3  0.342 na  
chr4 5500 1  0.068 na  
chr4 6000 0  0.000 na  
chr4 6500 0  0.000 na  
chr5 7000 2  0.079 na  
chr5 7500 12  0.440 na 

Из этой таблицы, я хотел бы создать несколько участков - по одному для каждого chr- где будет XAxis и Y оси столбец 2 и 5.

на основе ответа на другой вопрос, я попытался это,

require(ggplot2) 
require(plyr) 
Y <- read.table("integ.pi") 
names(Y) <- c("Chr","Window","SNPs","covfra","pi") 
chrs <- levels(Y[,"Chr"]) 
c <- lapply(chrs, function(chr) { 
ggplot(Y[Y[, "Chr"]==chr,], aes(x=as.factor(Window), y=pi)) 
}) 
lapply(c) 

Но я Обнаружили ошибку

"Error: No layers in plot".

Как мне это сделать? Есть идеи?

Спасибо.

Приветствия,

+3

Ну, как следует сообщение: добавить слой на свой сюжет, как 'geom_point' или что-то. См. Http://docs.ggplot2.org/current/ggplot.html – lukeA

+3

, вам нужно определить _what_ для построения с помощью 'ggplot'. Если вам нужны точки (диаграмма рассеяния), 'geom_point', если вы хотите строки,' geom_line'. Попробуйте прочитать учебник ggplot, есть много, если вы google. – PavoDive

+2

В качестве побочного комментария: 'c()' является функцией в R. Поэтому неверно использовать переменные 'c'. – Heroka

ответ

2

Просто простой пример, чтобы увидеть, как использовать команды:

library(ggplot2) 

dt = data.frame(Chr = c("c1","c1","c1","c2","c2","c2","c3","c3","c3"), 
       x = c(1,2,3,4,5,6,7,8,9), 
       y = c(2,4,5,2,3,4,6,6,7)) 

ggplot(dt, aes(x,y, col=Chr)) + 
    geom_point(size = 3) + 
    geom_line() + 
    facet_grid(. ~ Chr) # remove this to have all lines in same plot 
Смежные вопросы