【问题标题】:Labels for Scatterplot Matrix in RR中散点图矩阵的标签
【发布时间】:2016-05-17 15:43:47
【问题描述】:

我是 R 的新手,所以在调查我可能不雅的解决问题的尝试时,请考虑这一点。

我使用的数据来自行为心理学研究。我有一个数据框,其中包含来自 3 个不同行为任务的 6 个不同参数(称为 mu、sigma、tau、v、a、Ter)。此外,还有 2 种刺激类型,面部和房屋图片。 colnames(plot_data) 产生以下结果:

 [1] "subject"                      "v.DelayedNMatchingFaces"     
 [3] "a.DelayedNMatchingFaces"      "Ter.DelayedNMatchingFaces"   
 [5] "mu.DelayedNMatchingFaces"     "sigma.DelayedNMatchingFaces" 
 [7] "tau.DelayedNMatchingFaces"    "v.DelayedNMatchingHouses"    
 [9] "a.DelayedNMatchingHouses"     "Ter.DelayedNMatchingHouses"  
[11] "mu.DelayedNMatchingHouses"    "sigma.DelayedNMatchingHouses"
[13] "tau.DelayedNMatchingHouses"   "v.MorphFaces"                
[15] "a.MorphFaces"                 "Ter.MorphFaces"              
[17] "mu.MorphFaces"                "sigma.MorphFaces"            
[19] "tau.MorphFaces"               "v.MorphHouses"               
[21] "a.MorphHouses"                "Ter.MorphHouses"             
[23] "mu.MorphHouses"               "sigma.MorphHouses"           
[25] "tau.MorphHouses"              "v.verificFaces"              
[27] "a.verificFaces"               "Ter.verificFaces"            
[29] "mu.verificFaces"              "sigma.verificFaces"          
[31] "tau.verificFaces"             "v.verificHouses"             
[33] "a.verificHouses"              "Ter.verificHouses"           
[35] "mu.verificHouses"             "sigma.verificHouses"         
[37] "tau.verificHouses"

现在,我需要做一个包含单个参数的双变量散点图,但是每个任务,所以我想做一个 3x3 散点图矩阵(例如:a.DelayedNMatchingFacesa.MorphFacesa.verificFaces)。该矩阵将保存到根据参数和刺激类型命名的 png 中(例如,如果它是用于房屋刺激的参数 a,则为“a_H.png”)。我已经构建了一个 for 循环,它遍历列并从列 i、列 i+12 和列 i+24 构建变量矩阵的散点图,因为每个参数在标题行的第 12 步出现一次。循环如下所示:

for (col_ix in 2:13) {

  i <- col_ix + 12
  j <- col_ix + 24

  param_col <- colnames(plot_data)[col_ix]
  param <- strsplit(param_col,"[.]")[[1]][1] 

  if (grepl("Faces", colnames(plot_data)[col_ix]) == TRUE) {
    stim_col <- "F" 
    }
  else {
    stim_col <- "H" 
    }

  png(paste(param, stim_col, ".png", sep="_"))
  scatterplotMatrix(~ plot_data[ ,col_ix] + plot_data[ ,i] + plot_data[ ,j] , span=0.7, data= plot_data)
  dev.off()

}

这似乎可行,虽然我承认必须有一千种方法可以更有效地做到这一点,但是嘿,实际上这是我的第一个 R 循环。问题是:当我将散点图矩阵保存为 png 文件时,png 中可见的图根据公式中指示的数据源进行标记,因此在这种情况下,它将是 plot_data[col_ix]、@987654331 @ 和 plot_data[j](见下文)。但是,这些图应该根据列名进行标记,这样当您查看它们时,您可以看到显示哪个变量并用哪个变量绘制。有一个参数叫做var.labels,我已经看到了,但我不知道如何给每个图命名,因为索引col_ixij 是运行数字并且不能在 var.labels 参数中列出所有三个。

有人可以帮忙吗?非常感谢建议(顺便说一下,如果它们包含不直接链接到变量标签的建议)。如果我的解释不专业或没有正确使用特定术语,我深表歉意;希望一切都是可以理解的。如果需要更多信息,请告诉我,然后我会添加。

非常感谢大家。

【问题讨论】:

  • 看看xlabylab。您可以在循环中自动更改标签,例如:ylab=names(plot_data)[j]。在运行循环之前,可能值得玩弄第一列以使内容看起来正确。
  • 谢谢!但是,这些是用于标记绘图的 x 轴和 y 轴的命令,对吧?我正在尝试在矩阵 png 中标记诊断图。在图像中,显示了数据源的名称。由于这个来源是plot_data[ ,col_ix]plot_data[ ,i]plot_data[ ,j],这正是图像中出现的文本,但我希望变量名出现。 var.labels 似乎是正确的选择,但它不允许超过 1 个值(或列表或向量,据我所知)作为输入。但也许我误解了你的评论,或者我太执着于var.labels 选项?
  • 对不起,我看错了你的问题。通常最好让它尽可能简短和简单,因为人们会很快地扫描一个问题。请参阅我的答案尝试。

标签: r plot labels


【解决方案1】:

您可以只使用与 i j 和 col_ix 关联的名称,如下所示:

plot_data[ , names(plot_data)[col_ix]] + plot_data[ ,names(plot_data)[i]] 
  + plot_data[, names(plot_data)[j]]

这可能不会立即产生您想要的结果,但您可以使用相同的方法来获取 var.labels 的名称:

var.labels= c(names(plot_data)[i], names(plot_data)[j])

或任何确切的语法。我没有安装这个包,但这应该会让你很接近。

【讨论】:

  • 感谢您的帮助,这非常有效!太棒了:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-29
  • 2014-11-09
  • 2016-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多