2017-06-20 72 views
1

我希望能够做到这样:https://stackoverflow.com/a/30036603,除了“legend.text”而不是“axis.text.x”。这可能吗?ggplot2:格式化图例分类

这将是这样的,但它不是当前工作(全部labs是斜体):

data <- data.frame(labs = c("Oranges", "Apples", "Cucumbers"), counts = c(5, 10, 12)) 

ggplot(data = data) + 
geom_bar(aes(x = labs, y = counts,fill=labs), stat="identity") + 
theme(axis.text.x=element_text(face=ifelse(levels(data$labs)=="Cucumbers","plain","italic"))) + 
    theme(legend.text=element_text(face=ifelse(levels(data$labs)=="Cucumbers","plain","italic"))) 
+1

这将是更容易帮助,如果你提供了一个自足[重复的例子(https://stackoverflow.com/questions/5963269/how-to-make-a (例如,可重复生产的例子)和一些样品输入数据并描述所需的输出。 – MrFlick

+0

我上面添加的例子有帮助吗? – Katie

回答

1

而不是与主题搞乱,你可以调整尺度绘制表达式可以包括斜体字。例如

toexpr<-function(x) { 
    getfun <- function(x) { 
    ifelse(x=="Cucumbers", "plain", "italic") 
    } 
    as.expression(unname(Map(function(f,v) substitute(f(v), list(f=as.name(f), v=as.character(v))), getfun(x), x))) 
} 

ggplot(data = data) + 
    geom_bar(aes(x = labs, y = counts,fill=labs), stat="identity") + 
    scale_x_discrete(breaks =levels(data$labs), labels = toexpr(levels(data$labs))) + 
    scale_fill_discrete(breaks=levels(data$labs), labels = toexpr(levels(data$labs))) + 
    theme(legend.text.align = 0) 

enter image description here