R 如何用不同的颜色在一幅图上画多条线?
我有一个数据集,包括连续横断面的三种鱼类的累积计数,因此这包括3列(物种、计数、横断面) e、 gR 如何用不同的颜色在一幅图上画多条线?,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
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))