首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ggplot2:格式化图例类别

ggplot2:格式化图例类别
EN

Stack Overflow用户
提问于 2017-06-20 00:26:00
回答 1查看 826关注 0票数 2

我希望能够这样做:https://stackoverflow.com/a/30036603,除了使用"legend.text“而不是"axis.text.x”。这个是可能的吗?

它应该是这样的,但它目前不起作用(所有labs都是斜体):

代码语言:javascript
复制
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")))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-20 19:42:05

而不是扰乱主题,你可以调整比例,以绘制表达式,其中可以包括斜体字。例如

代码语言:javascript
复制
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)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44641870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档