R 不为 plot() 函数分配颜色
R does not assign colors to plot() function
所以我想用我去年在class看到的内容来复习我的R知识,但是我遇到了一个问题。我想为一个关于花的文件生成一个图,图中的颜色针对每朵花(setosa、versicolor、virginica)。这在去年有效,但现在完全相同的代码给我一个错误:
> irisData <- read.table("irisData2.txt", header=TRUE)
> plot(x=irisData$Sepal.Length, y=irisData$Petal.Length, col=irisData$Species)
> Error in plot.xy(xy, type, ...) : invalid color name 'setosa'
这给了我一个包含三种颜色的散点图,每种颜色代表一个物种,但现在它不起作用了。我该如何解决这个问题?
注意:我现在使用一台新笔记本电脑,并将 R 更新到最新版本(1.4.1106)。
提前谢谢你。
您可能曾经 运行 在 R 版本 <4.0 上使用此代码,现在您 运行 在 R 4.0 上使用它。
R 4.0 更改了 read.table
(和其他函数)中字符串列的默认处理方式。因此,data.frame 的 Species
列现在是 character
类型,而它以前是 factor
.
类型
要使您的代码再次运行,请更改列类型:
irisData$Species = as.factor(irisData$Species)
为了更详细地解释错误消息,plot
的 col
参数接受颜色向量或 数字向量(或因子,内部整数)。如果参数是数字向量,则这些数字用于索引当前集合 palette()
。但是,如果参数是一个字符串向量(就像在 R 4.0 上 运行ning 时在你的代码中那样),那么这些被解释为颜色 names/values 而不是当前调色板中的索引。这失败了,因为“鸢尾花”种类不是有效的颜色名称。
所以我想用我去年在class看到的内容来复习我的R知识,但是我遇到了一个问题。我想为一个关于花的文件生成一个图,图中的颜色针对每朵花(setosa、versicolor、virginica)。这在去年有效,但现在完全相同的代码给我一个错误:
> irisData <- read.table("irisData2.txt", header=TRUE)
> plot(x=irisData$Sepal.Length, y=irisData$Petal.Length, col=irisData$Species)
> Error in plot.xy(xy, type, ...) : invalid color name 'setosa'
这给了我一个包含三种颜色的散点图,每种颜色代表一个物种,但现在它不起作用了。我该如何解决这个问题? 注意:我现在使用一台新笔记本电脑,并将 R 更新到最新版本(1.4.1106)。 提前谢谢你。
您可能曾经 运行 在 R 版本 <4.0 上使用此代码,现在您 运行 在 R 4.0 上使用它。
R 4.0 更改了 read.table
(和其他函数)中字符串列的默认处理方式。因此,data.frame 的 Species
列现在是 character
类型,而它以前是 factor
.
要使您的代码再次运行,请更改列类型:
irisData$Species = as.factor(irisData$Species)
为了更详细地解释错误消息,plot
的 col
参数接受颜色向量或 数字向量(或因子,内部整数)。如果参数是数字向量,则这些数字用于索引当前集合 palette()
。但是,如果参数是一个字符串向量(就像在 R 4.0 上 运行ning 时在你的代码中那样),那么这些被解释为颜色 names/values 而不是当前调色板中的索引。这失败了,因为“鸢尾花”种类不是有效的颜色名称。