2011-06-01 61 views
22

我可以在ggplot2圖例中使用下標嗎?我看到this question在傳說和其他地方的希臘字母,但我無法弄清楚如何適應它。如何在ggplot2圖例中使用下標[R]

我認爲使用expression(),它在軸標籤工作,將做的伎倆。但我下面的嘗試失敗了。謝謝!

library(ggplot2) 
temp <- data.frame(a = rep(1:4, each = 100), b = rnorm(4 * 100), c = 1 + rnorm(4 * 100)) 
names(temp)[2:3] <- c("expression(b[1])", "expression(c[1])") 
temp.m <- melt(temp, id.vars = "a") 
ggplot(temp.m, aes(x = value, linetype = variable)) + geom_density() + facet_wrap(~ a) 
+3

' 「表達(B [1])」'將作爲字符,而不是表達來治療。 – chl 2011-06-01 14:33:50

回答

22

下應該工作(與names(temp) <-刪除您的行...):

ggplot(temp.m, aes(x = value, linetype = variable)) + 
    geom_density() + facet_wrap(~ a) +  
    scale_linetype_discrete(breaks=levels(temp.m$variable), 
          labels=c(expression(b[1]), expression(c[1]))) 

(通過name=如圖例標題),可用自定義見help(scale_linetype_discrete)

13

如果您希望將希臘符號等納入主要刻度標籤,請使用未評估的expression

對於柱狀圖,我做了以下:

library(ggplot2) 
data <- data.frame(names=tolower(LETTERS[1:4]),mean_p=runif(4)) 

p <- ggplot(data,aes(x=names,y=mean_p)) 
p <- p + geom_bar(colour="black",fill="white") 
p <- p + xlab("expressions") + scale_y_continuous(expression(paste("Wacky Data"))) 
p <- p + scale_x_discrete(labels=c(a=expression(paste(Delta^2)), 
           b=expression(paste(q^n)), 
           c=expression(log(z)), 
           d=expression(paste(omega/(x + 13)^2)))) 
p 

barplot with greek letters and superscripts

相關問題