在图例文本ggplot2中使用希腊符号时,图例文字不会变为粗体和图例键

时间:2014-07-02 13:49:22

标签: r ggplot2

这可能非常简单,但我似乎找不到答案。我正在为我的传奇(mu)添加希腊字母。但是,当我这样做时,使用legend.key = element_rect(colour = "black")时,我的图例键框周围的黑色轮廓不会出现。我还希望图例关键文字是粗体,但这也不起作用。

有人有任何提示吗?

以下是一个例子:

示例数据(抱歉,不知道如何上传以便从.csv导入):

Name,Time,Dose,Variable,n,Mean,SD,Median,Upper.SEM,Lower.SEM
Ted,1,0,P,3,20.1341,1.049791,20,0.5728394,0.5569923
Fred,1,0,P,3,38.63702,1.042969,37.74,0.9499892,0.9271918
Ted,1,1,P,3,22.79528,1.110182,21.64,1.4179833,1.334943
Fred,1,1,P,3,24.25966,1.156925,23.82,2.1300073,1.9580866

示例代码:

R<- subset(example, Dose=="0")
S<- subset(example, Dose=="1")
R_S<- rbind(R,S)
names(R_S)

w<- ggplot(R_S, aes(x=Name, y=Mean,fill=interaction(Name,Dose) ))
w<-w + geom_bar(stat="identity", position="dodge") 
w<-w + geom_errorbar(aes(ymax=Mean+Upper.SEM, ymin=Mean-Lower.SEM),          position=position_dodge(0.9), width=0.5)
w<- w+   scale_fill_manual(values=c("#00FF00","#FF0000","#98FB98","#FF7F50"),name="",labels=c(~"Fred-    Control  (0"* mu * M* ")  ", ~"Ted- Control  (0"* mu * M* ")  ",~"Fred- Treated (1"* mu * M* ")  ",~"Ted- Treated (1"* mu * M* ")  "))
w + theme(legend.key = element_rect(colour = "black"))
w<-w+ theme(legend.position = "bottom") 
w<-w+ theme(legend.key.size = unit(1.5, "lines"))
w<- w + theme(legend.text = element_text(colour="black", size = 18, face = "bold"))
w<-w+ theme(axis.title.x = element_text( face="bold",size=20))
w<-w+ theme(axis.title.y = element_text(face="bold",size=20))
w<-w+ theme(axis.text.x=element_text(face="bold",colour='black', size=18))
w<-w+ theme(axis.text.y=element_text(face="bold",colour='black', size=16))
w

1 个答案:

答案 0 :(得分:1)

这个答案仅针对希腊字母问题。

?plotmath中所述:

  

请注意,粗体,斜体和粗体不适用于符号,因此不适用于符号字体中显示的希腊符号(如mu)。

  

在UTF-8语言环境中,可以输入任何Unicode字符,可能是\ uxxxx或\ Uxxxxxxxx转义序列,但问题是图形设备是否能够显示该字符。使用cairo的X11设备中可能会提供最广泛的字符:请参阅其帮助页面,了解如何安装其他字体可以提供帮助。 这通常可用于以粗体或斜体显示希腊字母。

这样可行(取决于您的设备):

p <- ggplot(mtcars,aes(x = mpg,y = hp,color = factor(cyl))) + geom_point()
p + scale_color_manual(values = c('red','blue','green'),
                       labels = list(substitute(bold("\u03b2")),
                                     substitute(bold("\u03b1")),
                                     substitute(bold("\u03bc"))))