为什么我的point()代码不起作用?在 r 中绘制两个变量和第三个变量的子集

问题描述 投票:0回答:3
首先,我的数据集如下所示:(示例)

Sample_type Chick Adult Down 11 -23 Down 10 -25 Feather -22 Feather 9 -24 Primary 10.5 -22.5 No adult 11.5

我想制作一个包含两个变量(小鸡和成人)的散点图,这两个变量是“分隔”的,因为它是由第三个变量(样本类型)的子集分隔的。我在大学课程中被教导使用代码来做到这一点:

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")



但是,当我这样做时,图表上没有出现任何点(即第一行代码“有效”,但接下来的三行则不起作用)。我没有收到任何代码错误或警告。

我四处寻找类似的问题,我能找到的最接近的是:

如何在 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

分别。这然后导致我这样做:

plot.window(...)中的错误:需要有限的“xlim”值 - 我不确定如何将此处的建议应用于我的具体问题。

所以 - 我很确定这与丢失的数据或我试图子集化的第三个变量的性质有关。我不知道a)如何找出是否是数据的问题,或者是否是我的代码的问题(尽管我不认为代码是问题),或者b)我需要进行哪些调整实际上应该对我的数据和/或代码进行修改,以获得我想要的图表!

非常感谢在其他地方提供帮助或指导。

(注意:我也遇到过这个:

R 用 NA 值绘制数据集,但我不想这样做,因为我的数据不是线性的,因此任何填充都将是完全随机且不正确的。另外,当我简单地执行 plot(Chick~Adult)

 时,丢失的数据不是问题 - 丢失数据的行将自动不包含在结果图中。)

r graph plot subset missing-data
3个回答
2
投票
您尝试的第二个解决方案会给您一个错误,因为只有一个“=”。它应该看起来像这样:

with(chick_v_adult[chick_v_adult$Sample_type=="Down",], plot(Chick,Adult))


    


0
投票
我找到了将它们放到同一个图表上所需的代码 - 不过还是感谢丹尼的帮助。

有效的代码是:

#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")
    

0
投票
我刚刚遇到了类似的问题。也许使用“points”的“plot”函数之后绘制的点超出了图形。绘制第一个图时尝试使用“xlim”和“ylim”。

© www.soinside.com 2019 - 2024. All rights reserved.