ggplot2中的自定义标记和自定义字体

时间:2015-07-16 02:41:33

标签: r ggplot2

道歉,如果这很简单或已经得到解答,但我已经搜索过高低,并且无法在任何地方找到解决方案。

我正在使用ggplot2,尝试(1)为涉及下标的轴指定自定义刻度线,以及(2)尝试指定其中一些刻度线应为粗体而其他刻度线应为斜体。我知道如何分别做(1)和(2),但当我尝试两者同时做,只有(1)成功。

y.labels<-c(expression(A[Subscript]),expression(B^Superscript))
y.face<-c("bold","italic")
testdf<-data.frame(x=rnorm(100),y=1:2)

当我提供自定义标签时,不会出现粗体/斜体:

ggplot(testdf,aes(x=x,y=y))+geom_point()+
  scale_y_discrete(label=y.labels)
  theme(axis.text.y=element_text(face=y.face)) 

但是当我让标签采用默认值时,会出现粗体/斜体:

ggplot(testdf,aes(x=x,y=y))+geom_point()+
 theme(axis.text.y=element_text(face=y.face)) 

据我所知,这个问题与下标/上标没有任何关系, 即使这是我的目标,这里(这就是为什么我直接传递刻度线,而不是用所需的标签创建一个因子变量,这确实有效)。这不起作用:

ggplot(testdf,aes(x=x,y=y))+geom_point()+
  scale_y_discrete(label=c("Custom1","Custom2"))+
  theme(axis.text.y=element_text(face=y.face)) 

如果有人能够解释在这里发生了什么,并提供了一个解决方案,我可以做到这两点,那我就非常感激不尽。谢谢。

1 个答案:

答案 0 :(得分:2)

plotmath不尊重字体,您希望在表达式中使用bold()italic()

y.labels<-c(expression(bold(A)[Subscript]),expression(italic(B)^Superscript))
ggplot(testdf,aes(x=x,y=y))+geom_point()+
    scale_y_discrete(label=y.labels)