为什么我的 points() 代码不起作用?在 r 中用第三个子集绘制两个变量
Why does my points() code not work? Plotting two variables with subsets of a third in r
首先,我的数据集如下所示:(示例)
Sample_type Chick Adult
Down 11 -23
Down 10 -25
Feather -22
Feather 9 -24
Primary 10.5 -22.5
No adult 11.5
我想制作一个包含两个变量(Chick 和 Adult)的散点图,即 'separated',就像第三个变量 (Sample_type) 的子集一样。我在大学课程中被教导使用代码来做到这一点:
plot(Chick~Adult,type="n")
points(Chick~Adult,subset=(Sample_type="Down"),col="blue")
points(Chick~Adult,subset=(Sample_type="Feather"),col="red")
points(Chick~Adult,subset=(Sample_type="Primary"),col="green")
然而,当我这样做时,图表上没有出现任何点(即第一行代码 'works' 但接下来的三行没有)。我没有收到任何代码错误或警告。
我四处寻找类似的问题,我能找到的最接近的问题是:How to plot a subset of a data frame in R? 但是在根据建议的代码尝试 with(chick_v_adult[chick_v_adult$Sample_type="Down",], plot(Chick,Adult))
和 plot(Chick[Sample_type="Down"],Adult[Sample_type="Down"])
之后,我收到了错误
Error: unexpected '=' in "with(chick_v_adult[chick_v_adult$Sample_type="
和
Error in plot.window(...) : need finite 'xlim' values
In addition: Warning messages:
1: In min(x) : no non-missing arguments to min; returning Inf
2: In max(x) : no non-missing arguments to max; returning -Inf
3: In min(x) : no non-missing arguments to min; returning Inf
4: In max(x) : no non-missing arguments to max; returning -Inf
分别。然后我想到了这个:Error in plot.window(...) : need finite 'xlim' values - 我不确定如何将这里的建议应用到我的具体问题中。
所以 - 我很确定这与丢失的数据或我试图子集化的第三个变量的性质有关。我不知道 a) 如何确定它是否是数据的问题,或者它是否是我的代码的问题(虽然我不认为代码是问题),或者 b) 我做了什么调整实际上应该对我的数据进行 and/or 代码,以获得我想要的图表!
非常感谢在其他地方提供帮助或指导。
(注意:我也遇到过这个:R plotting a dataset with NA Values 但我不想这样做,因为我的数据不是线性的,所以任何填充都是完全随机和不正确的。此外,当我简单地执行 plot(Chick~Adult)
时,丢失的数据不是问题 - 缺少数据的行自动不包含在结果图中。)
您尝试的第二种解决方案给您一个错误,因为只有一个“=”。它应该是这样的:with(chick_v_adult[chick_v_adult$Sample_type=="Down",], plot(Chick,Adult))
我想出了将它们放在同一张图上所需的代码 - 感谢 Danny 的帮助。
有效的代码是:
#create an empty plot
plot(Chick~Adult,type="n")
#create separate vectors for each subset you want
Dvalues<-chick_v_adult[chick_v_adult$Sample_type=="Down",]
Fvalues<-chick_v_adult[chick_v_adult$Sample_type=="Feather",]
Pvalues<-chick_v_adult[chick_v_adult$Sample_type=="Primary",]
#plot the points using the new vectors
points(Dvalues$Chick~Dvalues$Adult,col="Red",pch=16)
points(Fvalues$Chick~Fvalues$Adult,col="Blue",pch=16)
points(Pvalues$Chick~Pvalues$Adult,col="Green",pch=16)
#plot lines over the points
abline(lm(Dvalues$Chick~Dvalues$Adult),col="Red")
abline(lm(Fvalues$Chick~Fvalues$Adult),col="Blue")
abline(lm(Pvalues$Chick~Pvalues$Adult),col="Green")
首先,我的数据集如下所示:(示例)
Sample_type Chick Adult
Down 11 -23
Down 10 -25
Feather -22
Feather 9 -24
Primary 10.5 -22.5
No adult 11.5
我想制作一个包含两个变量(Chick 和 Adult)的散点图,即 'separated',就像第三个变量 (Sample_type) 的子集一样。我在大学课程中被教导使用代码来做到这一点:
plot(Chick~Adult,type="n")
points(Chick~Adult,subset=(Sample_type="Down"),col="blue")
points(Chick~Adult,subset=(Sample_type="Feather"),col="red")
points(Chick~Adult,subset=(Sample_type="Primary"),col="green")
然而,当我这样做时,图表上没有出现任何点(即第一行代码 'works' 但接下来的三行没有)。我没有收到任何代码错误或警告。
我四处寻找类似的问题,我能找到的最接近的问题是:How to plot a subset of a data frame in R? 但是在根据建议的代码尝试 with(chick_v_adult[chick_v_adult$Sample_type="Down",], plot(Chick,Adult))
和 plot(Chick[Sample_type="Down"],Adult[Sample_type="Down"])
之后,我收到了错误
Error: unexpected '=' in "with(chick_v_adult[chick_v_adult$Sample_type="
和
Error in plot.window(...) : need finite 'xlim' values
In addition: Warning messages:
1: In min(x) : no non-missing arguments to min; returning Inf
2: In max(x) : no non-missing arguments to max; returning -Inf
3: In min(x) : no non-missing arguments to min; returning Inf
4: In max(x) : no non-missing arguments to max; returning -Inf
分别。然后我想到了这个:Error in plot.window(...) : need finite 'xlim' values - 我不确定如何将这里的建议应用到我的具体问题中。
所以 - 我很确定这与丢失的数据或我试图子集化的第三个变量的性质有关。我不知道 a) 如何确定它是否是数据的问题,或者它是否是我的代码的问题(虽然我不认为代码是问题),或者 b) 我做了什么调整实际上应该对我的数据进行 and/or 代码,以获得我想要的图表!
非常感谢在其他地方提供帮助或指导。
(注意:我也遇到过这个:R plotting a dataset with NA Values 但我不想这样做,因为我的数据不是线性的,所以任何填充都是完全随机和不正确的。此外,当我简单地执行 plot(Chick~Adult)
时,丢失的数据不是问题 - 缺少数据的行自动不包含在结果图中。)
您尝试的第二种解决方案给您一个错误,因为只有一个“=”。它应该是这样的:with(chick_v_adult[chick_v_adult$Sample_type=="Down",], plot(Chick,Adult))
我想出了将它们放在同一张图上所需的代码 - 感谢 Danny 的帮助。
有效的代码是:
#create an empty plot
plot(Chick~Adult,type="n")
#create separate vectors for each subset you want
Dvalues<-chick_v_adult[chick_v_adult$Sample_type=="Down",]
Fvalues<-chick_v_adult[chick_v_adult$Sample_type=="Feather",]
Pvalues<-chick_v_adult[chick_v_adult$Sample_type=="Primary",]
#plot the points using the new vectors
points(Dvalues$Chick~Dvalues$Adult,col="Red",pch=16)
points(Fvalues$Chick~Fvalues$Adult,col="Blue",pch=16)
points(Pvalues$Chick~Pvalues$Adult,col="Green",pch=16)
#plot lines over the points
abline(lm(Dvalues$Chick~Dvalues$Adult),col="Red")
abline(lm(Fvalues$Chick~Fvalues$Adult),col="Blue")
abline(lm(Pvalues$Chick~Pvalues$Adult),col="Green")