调整轴标签的括号大小和正态分布曲线下的阴影

时间:2015-11-11 22:19:21

标签: r ggplot2

我是ggplot2的新手。这是我正在使用的代码和输出:

library(package=ggplot2)
normal <- function(mu, sigma, x){
1/(sigma*sqrt(2*pi))*exp(-((x-mu)/sigma)^2)
}
ggplot(NULL, aes(x=x, color=g)) + 
  stat_function(data=data.frame(x=c(-2, 3.5), g=factor(1)), fun=normal, geom='line', 
                args=list(mu=0.5, sigma=2)) +   
  stat_function(data=data.frame(x=c(-2, 3.5), g=factor(2)), fun=normal, geom='line', 
                args=list(mu=1, sigma=2))  +           
  scale_x_continuous(breaks=seq(from=-2, to = 3, by=1)) +
  ylab(expression(f(x) == frac(1, sigma~sqrt(2*pi)) ~ exp(-(frac(x-mu,sigma))^2))) + 
  scale_color_manual('',values=c('blue','red'), 
  labels=c(expression(N(mu == 0.5, sigma==2)),expression(N(mu == 1, sigma==2)))) +
  theme(panel.background = element_rect(fill='white'),
        panel.border=element_rect(fill=NA), 
        legend.background = element_blank(),
        legend.box = 'vertical',
        legend.position=c(0.85,0.85),
        legend.text.align=0) +
  coord_cartesian(ylim=c(0, 0.25)) 

我知道有一个dnorm函数可以处理密度很好,但我想至少知道如何使用stat_function来创建我创建的任何函数。

无论如何,我离题了。这是输出:

enter image description here

有没有办法可以调整y轴标签中的括号,使它们适合exp内的所有内容?

由于我是ggplot2的新用户,因此我们也会感谢任何与编写清洁代码相关的建议。

1 个答案:

答案 0 :(得分:2)

这演示了使用bgroup可用于部署可扩展分隔符,如?plotmath:

中所述
plot( 1,1, ylab =expression(
           f(x) == frac(1, sigma~sqrt(2*pi)) ~ e^-bgroup("(", frac(x-mu,sigma), ")")^2) )

我还选择使用e^expr而不是“exp()”,因为它创建了更“数学”的外观,并且还简化了编码。 (需要使交互式设备和文件设备的左边距更大,以适应ylab的宽度。

enter image description here