Проблема с математическим выражением аннотации в ggplot2 - PullRequest
0 голосов
/ 18 сентября 2018

Я хочу сделать следующую аннотацию на графике ggplot

enter image description here

Я использую это

ggplot(data = data.frame(x = c(0, 70)), aes(x)) +
  stat_function(fun = dchisq, args = list(df = 30))+
  annotate("text", x = c(7), y = c(0.019), 
           label = "P(16.791<=chi[70]^{2}<46.979)==0.95",parse = TRUE , size=4 , fontface="bold")

И получаюследующая ошибка

Error in parse(text = as.character(lab)) : <text>:1:22: inesperado '<'
1: P(16.791<=chi[70]^{2}<
                         ^

Почему первый «<=» анализируется, а второй «<» не </p>

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Проблема в том, что ?plotmath способ рисования выражений требует от вас правильного выражения R.И что-то вроде

1 < 2 < 3

дает синтаксическую ошибку в R. Вы не можете иметь ряд подобных неравенств. Самый простой способ обойти это - принудительно создать какую-то группировку в своем выражении с помощью list() вызов.Например,

ggplot(data = data.frame(x = c(0, 70)), aes(x)) +
  stat_function(fun = dchisq, args = list(df = 30))+
  annotate("text", x = c(7), y = c(0.019), 
           label = "P(list(16.791<=chi[70]^{2})<46.979)==0.95",parse = TRUE , size=4 , fontface="bold")

enter image description here

0 голосов
/ 18 сентября 2018

Это также должно работать:

ggplot(data.frame(x = c(0, 70)), aes(x = x)) +
stat_function(fun = dchisq, args = list(df = 30))+
annotate("text", x = 7, y = 0.019, 
         label = "paste(italic(P), \"(16.791 <=\",italic(chi)[70]^2,\"<46.979)==0.95\")",parse = TRUE , size=4 , fontface="bold")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...