1

我想制作一个跨越 4 个点的 2 组线的折线图,这些线由颜色(黑色或灰色 50)区分。黑色和灰色线不应连接。

我的数据框如下所示:

Index    Frequency Colour
1              1    Black
2              1    Black
3              0.8  Black
4              0    Black
1              0    Gray50
2              0    Gray50
3        0.88235294 Gray50
4              1    Gray50
1              1    Black
2              1    Black
3        0.85714286 Black
4              0    Black
1       0.02631579  Gray50
2         0.0625    Gray50
3          0.875    Gray50
4              1    Gray50
1              1    Black
2              1    Black
3             0.875 Black
4              0    Black
1              0    Gray50
2              0    Gray50
3        0.86666667 Gray50
4              1    Gray50 

这是我想要的折线图类型的粗略示例

到目前为止我的代码:

#object made from dataframe
alleles <- parallel_allele_freq

##plot 

plot(alleles$Index,alleles$Frequency,xlab = "Gradient",xaxt = 'n',
     ylab = "Frequency of P allele",
     col = alleles$Colour, pch = 16, cex = 1.25, type = "b")

axis(1, at = seq(1, 4, by = 1))

这是我得到的图表,黑色和灰色线相连。

任何人都知道我怎样才能得到它,以便每行只有 4 个点在文件中按顺序排列并根据颜色?任何帮助是极大的赞赏!

4

1 回答 1

0

在下文中,我只是运行一个循环来获取每四行。我不确定这是否是你所追求的......

x <- read.table("temp.txt", header = TRUE)
plot(x$Index[1:4], x$Frequency[1:4], col=tolower(x$Colour[1]), 
     type = "b", lwd = 2,
     xlab = "Gradient", xaxt = 'n',
     ylab = "Frequency of P allele",
     pch = 16, cex = 1.25)

for (j in 1:5)
  points(x$Index[(j*4)+1:4], x$Frequency[(j*4)+1:4], 
          col=tolower(x$Colour[(j*4)+1]),
          type = "b", lwd = 2)

axis(1, at = seq(1, 4, by = 1))

在此处输入图像描述

于 2017-12-08T06:51:28.190 回答