Вставка символа leq в замену, математическая аннотация в R

У меня есть следующий график:

library(tidyverse)

mm<-70
sdm<-12
weight_lim<-c(30, 110)
xrange<-55
ggplot(data = data.frame(weight = weight_lim), aes(weight)) +
  stat_function(fun = dnorm, n = 101, args = list(mean = mm, sd = sdm),color=1) +
  ylab("f(weight)") + scale_x_continuous(breaks=seq(weight_lim[1],weight_lim[2], by=5)) + 
  stat_function(fun = dnorm, args = list(mean = mm,sd=sdm),
                xlim = c(weight_lim[1],xrange[1]),
                geom = "area",fill="red",alpha=0.5)+
  annotate("text", x = 40, y = .02, 
           label = substitute(paste("P(X < ",v," ) = ",s),list(v=format(xrange, nsmall = 1),s=round(pnorm(xrange,mm,sdm),4))),
           size=3 , fontface="bold")+
  theme_bw()
#> Warning in is.na(x): is.na() applied to non-(list or vector) of type 'language'

Создано 22 августа 2020 г. с помощью пакета reprex (v0.3.0)

Я хочу заменить «‹» на меньше или равно для входа

substitute(paste("P(X < ",v," ) = ",s),list(v=format(xrange, nsmall = 1),s=round(dnorm(xrange,mm,sdm),4)))


person Nicolas Molano    schedule 22.08.2020    source источник


Ответы (2)


Если у вас есть

vv = format(xrange, nsmall = 1)
ss = round(dnorm(xrange,mm,sdm),4)

Тогда любой из них будет работать.

lab = bquote(P(X <= .(vv)) == .(ss)) 
# or
lab = substitute(P(X <= v) == s, list(v=vv, s=ss))

p + annotate("text", x = 40, y = .02, label = deparse(lab), parse=TRUE)

Отмечая из аннотировать формулу (с bqoute или заменить) в R (ggplot) выдает Error, что annotate не принимает выражения, поэтому deparse/parse помогает избавиться от предупреждений.

person user20650    schedule 22.08.2020
comment
... и только что заметил, что вы, вероятно, хотите pnorm - person user20650; 22.08.2020

Один из самых простых способов вставить символ — использовать управляющую последовательность \u. Она используется так же, как и любая другая escape-последовательность, где код символа Unicode следует за \u. Вы можете увидеть пример здесь:

library(ggplot2)

ggplot(mtcars, aes(disp, mpg)) + geom_point() + theme_classic() +
  annotate('text', x=300, y=29, label='Unicode 2264: \u2264') +
  annotate('text', x=300, y=26, label='Unicode 2265: \u2265')

введите здесь описание изображения

Как видите, меньше или равно Unicode 2264, поэтому просто используйте \u2264 непосредственно в метке.

person chemdork123    schedule 22.08.2020