我引用了我的previous question,想了解更多有关R中factor
的特征的信息。
假设我有一个这样的数据集:
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)
不是。{/ p>
如果我想添加一些数学注释作为因素,我该怎么办?
答案 0 :(得分: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)
答案 1 :(得分:2)
我没有在ggplot中看到任何级别参数,并且将levels
分配给字符向量应该不起作用。如果你试图分配表达式向量,你应该只使用一个expression
调用并用逗号分隔参数,你应该在scale函数中使用labels参数:
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
答案 2 :(得分:0)
表达式用于生成绘图和输出的文本,但不能是变量名称本身。您必须使用axis()
命令生成自己的标签。因为它可以评估表达式,你可以试试......
plot(temp, xaxt = 'n')
s <- paste('x>', 1:5, sep = '=')
axis(1, 1:5, parse(text = s))