R 如何用不同的颜色在一幅图上画多条线?

R 如何用不同的颜色在一幅图上画多条线?,r,plot,colors,R,Plot,Colors,我有一个数据集,包括连续横断面的三种鱼类的累积计数,因此这包括3列(物种、计数、横断面) e、 g Species Count Transect Cod 25 1 Cod 36 2 Cod 45 3 Haddock 12 1 Haddock 23 2 Haddock 34 3 等等… 我很可能有很多物种,我想在一个单独的地块上绘制,所以我尝试使用一个循环(我第一次尝试正确地使用循环!!)来加速这个过程,并完成了以下工作 xrange

我有一个数据集,包括连续横断面的三种鱼类的累积计数,因此这包括3列(物种、计数、横断面)

e、 g

Species Count Transect
Cod     25    1
Cod     36    2
Cod     45    3
Haddock 12    1
Haddock 23    2
Haddock 34    3
等等… 我很可能有很多物种,我想在一个单独的地块上绘制,所以我尝试使用一个循环(我第一次尝试正确地使用循环!!)来加速这个过程,并完成了以下工作

xrange <- range(Data$Transect)
ymax <- max(Data$Count)
plot(xrange,y=c(0,ymax+10),  yaxs = "i", type="n", las=1, xlab="Transect      Number", ylab="Total Number")
for (i in Data$Species){
species <- subset(Data, Species==i) 
lines(species$Transect, species$Count, type="o",lwd=2,lty=1,pch=NA)}

xrange简短的回答是查看
ggplot2
,因为这远远优于使用plot。 下面是一个工作示例(您的代码稍加修改):


tt问题在于,每次调用
lines()
,都会应用相同的颜色。为了防止出现这种情况,每次调用
lines()
时都需要迭代颜色向量。请注意,由于您正在迭代
数据$Species
——您可能希望
唯一(数据$Species)
,因此实际上在这里覆盖了三行

但根据@Iris的评论,您可以使用
ggplot2
更轻松地完成此操作:

require(ggplot2)
ggplot(data = Data, aes(x = Transect, y = Count, group = Species)) +
    xlab("Transect Number") + ylab("Total Number") +
    geom_line(aes(color = Species)) 

欢迎来到堆栈溢出!看一看ggplot2谢谢,太棒了,需要开始习惯使用ggplot,但我现在明白我的代码出了什么问题!感谢您一定要检查-非常互动/信息丰富。
tt <- "Species Count Transect
Cod     25    1
Cod     36    2
Cod     45    3
Haddock 12    1
Haddock 23    2
Haddock 34    3"

Data <- read.table(text=tt,header = T)
xrange <- range(Data$Transect)
ymax <- max(Data$Count)

my.levels <- levels(Data$Species)
my.colors<- rainbow(length(my.levels))

plot(xrange,
     y=c(0,ymax+10),
     yaxs = "i",
     type="n",
     las=1,
     xlab="Transect Number",
     ylab="Total Number")

for (i in 1:length(my.levels))
{
    species <- subset(Data, Species==my.levels[i]) 
    lines(species$Transect, species$Count, type="o",lwd=2,lty=1,pch=NA, col = my.colors[i])
}
require(ggplot2)
ggplot(data = Data, aes(x = Transect, y = Count, group = Species)) +
    xlab("Transect Number") + ylab("Total Number") +
    geom_line(aes(color = Species))