刻度线标签中的数学表达式,ggplot2

问题描述 投票:0回答:1

我想用数学表达式制作刻度标签。见下一个例子:

library(tidyverse)    
gl<-30
ggplot(data = data.frame(x = c(-5, 5)), aes(x)) +
      stat_function(fun = dt, args = list(df = 30))+ylab("f(t)")+
      geom_segment(aes(x=qt(.975,gl),xend=qt(.975,gl),y=0,yend=dt(qt(.975,gl),gl)))+
      scale_x_continuous("t", round(c(-5,qt(1-.975,gl),0,qt(.975,gl),5),3), limits=c(-5,5),labels=c("-5.000", "-2.042",  "0"  ,"list(q[0.95]==0.025)",  "5.000"))+
      annotate("segment", x = c(2.2), xend = c(3.8), 
               y = c(0.02), yend = c(.16), colour = "red", size=1, alpha=0.6, arrow=arrow())+
      annotate("segment", x = c(-1), xend = c(-3), 
               y = c(0.02), yend = c(.16), colour = 1, size=1, alpha=0.6, arrow=arrow())+
      stat_function(fun = dt, args = list(df = gl),
                    xlim = c(-5,qt(.975,gl)),
                    geom = "area",fill="red",alpha=0.5)+
        annotate("text", x = c(-3.8,3.8,4), y = c(0.18,0.18,.3), 
               label = c("1-alpha","alpha/2","list(q[0.95]==0.025)"),parse=T , size=4 , fontface="bold")+
      theme_bw()

enter image description here如果行

scale_x_continuous("t", round(c(-5,qt(1-.975,gl),0,qt(.975,gl),5),3), limits=c(-5,5),labels=c("-5.000", "-2.042",  "0"  ,"list(q[0.95]==0.025)",  "5.000"))

被替换为

scale_x_continuous("t", round(c(-5,qt(1-.975,gl),0,qt(.975,gl),5),3), limits=c(-5,5),labels=c("-5.000", "-2.042",  "0"  ,"list(q[0.95]==0.025)",  "5.000"),parse=T)

获得错误:

scale_x_continuous(“t”,round(c(-5,qt(1 - 0.975,gl),0,qt(0.975,:未使用的参数(parse = T))出错

如何在注释中实现scale_x_continuous中的数学表达式?

r ggplot2 axis-labels
1个回答
0
投票
xlabels <- c(
  ~ "-5.000",
  ~ "-2.042",
  ~ "0",
  ~ list(q[0.95]==0.025),
  ~ "5.000"
)
ggplot(......) + ...... + 
  scale_x_continuous("t", round(c(-5,qt(1-.975,gl),0,qt(.975,gl),5),3), 
                     limits=c(-5,5), 
                     labels= xlabels)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.