R 中散点图矩阵的标签
Labels for Scatterplot Matrix in R
我是 R 的新手,所以在调查我对 problem-solving 的不雅尝试时请考虑这一点。
我使用的数据来自行为心理学研究。我有一个数据框,包含来自 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.DelayedNMatchingFaces
、a.MorphFaces
、a.verificFaces
).该矩阵将保存为根据参数和刺激类型命名的 png(例如 "a_H.png" 如果它是 house-stimuli 的参数 a)。我构建了一个 for-loop 遍历列并构建了散点图,其中包含来自列 i
、列 i+12
和列 i+24
的变量矩阵,因为每个参数每 12 个出现一次步骤 header 行。循环如下所示:
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]
, plot_data[i]
和 plot_data[j]
(见下文)。然而,这些图应该根据列名进行标记,这样当您查看它们时,您可以看到显示了哪个变量并用哪个变量绘制。有一个名为 var.label
s 的参数,我已经看到了,但我只是想不通如何用它命名每个图,因为索引 col_ix
、i
和j
是 运行 个数字,不能在 var.labels
参数中列出所有三个。
有人能帮忙吗?非常感谢您的建议(顺便说一句,如果它们包含不直接链接到变量标签的建议)。如果我的解释不专业或没有正确使用特定术语,我深表歉意;希望一切都是可以理解的。如果需要更多信息,请告诉我,然后我会添加。
非常感谢大家。
您可以只使用与 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])
或任何确切的语法。我没有安装这个包,但这应该让你很接近。
我是 R 的新手,所以在调查我对 problem-solving 的不雅尝试时请考虑这一点。
我使用的数据来自行为心理学研究。我有一个数据框,包含来自 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.DelayedNMatchingFaces
、a.MorphFaces
、a.verificFaces
).该矩阵将保存为根据参数和刺激类型命名的 png(例如 "a_H.png" 如果它是 house-stimuli 的参数 a)。我构建了一个 for-loop 遍历列并构建了散点图,其中包含来自列 i
、列 i+12
和列 i+24
的变量矩阵,因为每个参数每 12 个出现一次步骤 header 行。循环如下所示:
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]
, plot_data[i]
和 plot_data[j]
(见下文)。然而,这些图应该根据列名进行标记,这样当您查看它们时,您可以看到显示了哪个变量并用哪个变量绘制。有一个名为 var.label
s 的参数,我已经看到了,但我只是想不通如何用它命名每个图,因为索引 col_ix
、i
和j
是 运行 个数字,不能在 var.labels
参数中列出所有三个。
有人能帮忙吗?非常感谢您的建议(顺便说一句,如果它们包含不直接链接到变量标签的建议)。如果我的解释不专业或没有正确使用特定术语,我深表歉意;希望一切都是可以理解的。如果需要更多信息,请告诉我,然后我会添加。
非常感谢大家。
您可以只使用与 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])
或任何确切的语法。我没有安装这个包,但这应该让你很接近。