R绘图dotplot 点尺寸不符合预期

dotplot 绘图不符合预期

for (i in 1:8528){
  x=!is.na(Env$SAL[i])
  if (x)  if (Env$SAL[i]>33) Env$Mycex[i]=5}
##将SAL大于33的点尺寸标记为5
 dotplot(factor(Env$Month)~Env$SAL|Env$Station,subset=Env$Area=="WZ",cex=Env$Mycex)

img

部分符合要求的值并未放大,求解原因,如有更精简的代码也请不吝赐教。

该回答引用GPTᴼᴾᴱᴺᴬᴵ
在你提供的R代码中,可能存在一些问题,这可能导致绘制的dotplot不符合预期。

首先,在你的代码中,你为Env数据框中的某些行指定了Env$Mycex值,而在其他行中,Env$Mycex的值可能是NA。当你使用Env$Mycex来设置cex时,这可能会导致一些点的大小不同于其他点。如果你想在绘制dotplot时将Env$Mycex用作cex,则需要首先将Env$Mycex中的所有NA值替换为一个默认值。

其次,你的dotplot语句可能需要修改。你指定了“Env$SAL | Env$Station”作为y轴变量,这将导致x轴和y轴上的点错位,因为Env$SAL和Env$Station是不同类型的变量。如果你想按站点绘制点,并按月份将点分组,则需要指定“Env$Station | factor(Env$Month)”作为y轴变量。

最后,你没有提供数据框Env的完整内容,所以我无法判断你是否已正确筛选和子集化数据。

以下是可能更符合预期的代码:

# 将NA替换为默认值
Env$Mycex[is.na(Env$Mycex)] <- 1

# 绘制dotplot
dotplot(factor(Env$Station) ~ factor(Env$Month) | Env$Area=="WZ", cex=Env$Mycex)


这将按站点将点绘制到y轴上,按月份分组,并将cex设置为Env$Mycex的值。注意,为了按月份分组,你需要将Env$Month转换为因子。