0

data2 と data3 のポイントが data1 の範囲内にある水平線でプロットを作成しようとしています。これにより、異なる色の重複する線が表示されますが、次のようなエラーが表示されます。

Error in strsplit(filename, "\\.") : non-character argument

これがデータとコードです。何か提案をください。

 data1 <- data.frame(Start=c(10),End=c(19))

 data2 <- data.frame(Start=c(5),End=c(15))

 data3 <- data.frame(Start=c(6),End=c(18))

 filter_data2 <- data2[data2$Start >= (data1$Start-(data1$Start/2)) & data2$End <= (data1$End+(data1$End/2)), ]

 filter_data3 <- data3[data3$Start >= (data1$Start-(data1$Start/2)) & data3$End <= (data1$End+(data1$End/2)), ]

 data1 <- data.frame(rep(1,nrow(data1)),data1)

 colnames(data1) <- c("ID","start","end")   

 data2 <- data.frame(rep(2,nrow(filter_data2)),filter_data2)

 colnames(data2) <- c("ID","start","end")

 data3 <- data.frame(rep(3,nrow(filter_data3)),filter_data3)

 colnames(data3) <- c("ID","start","end")

 dat1 <- rbind(data1,data2,data3)

 pdf("overlap.pdf")

 p <- ggplot(dat1, aes(x=(max(start)-max(start)/2), y = ID, colour=ID)) 
 p <- p + geom_segment(aes(xend =(max(end)+max(end)/2), ystart = ID, yend = ID))
 p <- p + scale_colour_brewer(palette = "Set1")

 ggsave(p)
4

1 に答える 1

0

コードには 2 つの問題があります。使用する場合はscale_colour_brewer()、ID 値を要因として設定する必要があります

p <- ggplot(dat1, aes(x=(max(start)-max(start)/2), y = ID, colour=as.factor(ID)))

次に、ggplot2 プロットを保存するには、2 つの方法があります。

関数を使用しggsave()て、ファイル名と形式を指定する必要があります。この場合、関数pdf()は不要です。

 ggsave(plot=p,file="plot.pdf")

function を使用して、次にpdf()を追加する必要があります。この場合、関数は必要ありません。print(p)dev.off()ggsave()

pdf("overlap.pdf")
print(p)
dev.off()
于 2013-03-21T14:12:03.640 に答える