4

我参考了我之前的问题,想了解更多关于factorR 中的特性。

假设我有一个这样的数据集:

temp <- data.frame(x=letters[1:5],
                   y=1:5)
plot(temp)

我可以轻松地将标签更改x为另一个字符:

levels(temp[,"x"]) <- letters[6:10]

但是如果我想把它改成一些expression

levels(temp[,"x"]) <- c(expression(x>=1),
                        expression(x>=2),
                        expression(x>=3),
                        expression(x>=4),
                        expression(x>=5))

>=符号不会在情节中相应改变。我发现class(levels(temp[,"x"]))character,但expression(x>=1)不是。

如果我想添加一些数学注释作为因子,我该怎么办?

4

3 回答 3

3

我在 ggplot 中看不到任何级别参数,并且分配levels给字符向量应该不起作用。如果您尝试分配表达式向量,您应该只使用一次expression调用并用逗号分隔参数,并且应该在比例函数中使用标签参数:

 p <- qplot(1:10, 10:1)+ scale_y_continuous( breaks= 1:10, 
                            labels=expression( x>= 1, x>=2, x>=3, x>= 4,x>=5,
                                              x>= 6, x>=7, x>= 8,x>=9, x>= 10) )
 p

在此处输入图像描述

于 2011-09-22T03:24:23.330 回答
2

我只是将它们保留为字符串

levels(temp[,"x"]) <- paste("x>=", 1:5, sep="")

如果您想将它们作为轴标签包含在内,您可以执行以下操作将它们转换为表达式:

lev.as.expr <- parse(text=levels(temp[,"x"]))

对于您的情节,您可以执行以下操作:

plot(temp, xaxt="n")
axis(side=1, at=1:5, labels=lev.as.expr)
于 2011-09-22T03:19:04.917 回答
0

表达式用于为绘图和输出生成文本,但不能作为变量名本身。您必须使用该axis()命令来生成您自己的标签。因为它可以评估您可以尝试的表达式...

plot(temp, xaxt = 'n')
s <- paste('x>', 1:5, sep = '=')
axis(1, 1:5, parse(text = s))
于 2011-09-22T03:18:18.707 回答