我正在使用ggplot绘制分组条形图。我想用独特的文本替换分组值,具体取决于它们的值。
但是我收到以下警告,格式化不能正常工作。什么可以修复有条件地替换地块中的标签?
1:if if(x ==“55”)lab =“High”否则if(x ==“15”)lab =“Low”: 条件的长度> 1,只使用第一个元素
LabelFormatter <- function (x) {
if (x == "55")
lab = "High"
else if (x == "15")
lab = "Low"
}
dF <- data.frame(name=rep(c("A","B","C"),2), value=sample(1:100,6), type=rep(c("15","55"),3))
p <- ggplot (dF, aes(x=type, y=value, fill=name)) + geom_bar(stat="identity", position="dodge")
p <- p + scale_x_discrete(label=LabelFormatter)
print(p)
答案 0 :(得分:1)
你可以试试这个
p+scale_x_discrete(label= c("15"="low", "55"="high"))
答案 1 :(得分:1)
Mamoun是一个非常干净的解决方案,应该被接受为这个简单案例的答案。正如Roland所说,你需要对你的格式化程序进行矢量化。这是一种方式,但不建议超过2 ifelse
:
LabelFormatter <- function (x) {
ifelse(x=="55", "High",
ifelse(x=="15", "Low", x))
}