2016-06-13 149 views
2

我试图用ggplot使条形图,东西非常像:覆盖GGPLOT2图例文本

mtcars$gear <- as.factor(mtcars$gear) 
ggplot(mtcars, aes(gear, mpg, fill=gear))+geom_bar(stat="identity")+ 
scale_fill_manual(values=c("grey30", "grey50", "grey70")) 

现在我想传说中的第一个标签(它在我的例子说,3)说“参考”,同时保持其余的标签完好无损,即4和5.

我有一个非常困难的时间找到一种方法来做到这一点。我一直无法在这里找到类似于我的地方的问题。

有没有人知道这个解决方案?

回答

2

修复因子标签,然后剧情:

# set labes when creating factor 
mtcars$gear <- factor(mtcars$gear, 
         levels = c("3", "4", "5"), 
         labels = c("reference", "4", "5")) 

或者,如果我们只想为"3"更新标签,因子转换后:

mtcars$gear <- as.factor(mtcars$gear) 
levels(mtcars$gear)[levels(mtcars$gear) == "3"] <- "reference" 
+0

'labels = c(“3”=“reference”)'应该做得好还是不好? – beetroot

+0

@beetroot你的意思是'因素(mtcars $ gear,labels = c(“3”=“reference”))',这是行不通的。 – zx8754

+0

对不起,我的意思是'scale_fill_manual()' – beetroot

1

您可以使用:

mtcars$gear <- as.factor(mtcars$gear) 
ggplot(mtcars, aes(gear, mpg, fill=gear)) + geom_bar(stat="identity") + 
scale_fill_manual(
    values=c("grey30", "grey50", "grey70"), 
    labels = c("reference", "4", "5"))