用符号替换标签

时间:2015-04-12 10:45:51

标签: r

我多次尝试用图中的符号替换标签列(Item1,Item2,Item3,...)。我使用过ltm包。这是代码:

fsc <- factor.scores(rasch(LSAT))
plot(fsc, include.items = TRUE)

我想用绘图中的黑色项目符号(符号)替换标签列,然后将它们重命名为A1,A2,A3,A4,A5。在这种情况下是否可以这样做?如果是,是否可以使它们变色?

1 个答案:

答案 0 :(得分:3)

您可以根据plot.fscores()

的方法创建自己的添加文字的功能

如果您不想以编程方式执行此操作,则可以使用dump("plot.fscores")的函数转储并在“dumpdata.R”中进行更改。

library(ltm)
dump("plot.fscores")
## now we can make the following changes to 'dumpdata.R':

## 1. change the function name.  I used 'myPlot.fscores'

## 2. add formal arguments to the argument list so we can pass them 
##    to text(). I added 
text.labels = NULL
col.labels = NULL

## 3. on line 28, change the entire line to 
text(Beta, rep_len(0L, length(Beta)), labels = text.labels, col = col.labels)

现在我们可以尝试一下......

fsc <- factor.scores(rasch(LSAT))
myPlot.fscores(fsc, include.items = TRUE, 
    text.labels = rownames(fsc$coef), col.labels = seq_len(nrow(fsc$coef)))

enter image description here

否则你可以写一些代码......

## copy plot.scores for modification
ff <- plot.fscores
## add an argument to ff() - I use 'text.labels' to avoid multiple matching
fm <-formals(ff)
formals(ff) <- append(fm, list(text.labels = NULL), length(fm)-1)
## change the stripchart() call to a call to text() with out new argument
body(ff)[[6]][[3]][[2]][[4]][[6]] <- quote(
    text(Beta, rep_len(0, length(Beta)), labels = text.labels)
)
## see if it works
fsc <- factor.scores(rasch(LSAT))
ff(fsc, include.items = TRUE, text.labels = rownames(fsc$coef))

enter image description here

我会让你对那个颜色有所了解。因为我对递归相当可怕,除了手动调查函数体之外,我没有更简单的方法来查找body(ff)[[6]][[3]][[2]][[4]][[6]]。我知道有一个递归函数用于定位函数体的各个部分,但我现在不记得它的名称并且没有成功搜索。