Как добавить сложный ярлык с курсивом и переменной в ggplot? - PullRequest
0 голосов
/ 04 декабря 2018

Я прочитал много сообщений на эту тему, используя expression(), paste() и bquote(), или какую-то комбинацию.Я думаю, что близок к решению моей проблемы, но я просто не могу туда добраться.Следующий скрипт генерирует график, помеченный как «y = 1 + 2 (x); r ^ 2 = 0.9».Как я могу выделить курсивом "y" и "x", выделить курсивом "r" и верхний индекс 2 в "r ^ 2"?Если я пропустил релевантный предыдущий пост, извините, но, пожалуйста, направьте меня на него.

df <- data.frame(x=c(1:5), y=c(1:5))
a <- 1    
b <- 2
r2 <- 0.9
eq <- paste("y = ", a, " + ", b, "(x); r^2=", r2)
ggplot(data=df, aes(x=x, y=y))+
  geom_point(color="black")+
  geom_text(x=2, y=4,label=eq, parse=FALSE)

Ответы [ 3 ]

0 голосов
/ 04 декабря 2018

Вы можете использовать annotate(), который позволяет вставлять непосредственно в график.

library(ggplot2)
ggplot(data=df, aes(x=x, y=y)) +
  geom_point(color="black") +
  annotate('text', 2.5, 4, 
           label=paste("italic(y)==", a, "+", b, 
                       "~italic(x)~';'~italic(r)^2==", r2), 
           parse=TRUE, 
           hjust=1, size=5)

Выход:

enter image description here

Данные:

df <- data.frame(x=c(1:5), y=c(1:5))
a <- 1
b <- 2
r2 <- 0.9
0 голосов
/ 04 декабря 2018

В дополнение к ответу Индраджит Патил & jay-sf я хотел бы добавить, что существует автоматический способ подгонки линий регрессии (я полагаю, что их много), используя пакет под названием ggpmisc .Буквы, которые вы хотите курсивом, уже отформатированы таким образом.Код, который необходимо использовать:

> install.packages('ggpmisc'); library(ggpmisc); formula <- y ~ x
> df <- data.frame(x=c(1:5), y=c(1:5))
> ggplot(data = df, aes(x, y)) + geom_point(color="black") + 
       geom_smooth(method =   "lm", formula = formula) + 
       stat_poly_eq(aes(label =   paste(..eq.label.., ..adj.rr.label.., sep = "~~~~")),
       formula = formula, parse = TRUE)

Он также показывает выделенные линии, которые, я надеюсь, не являются препятствием для достижения главной цели.fitting line with equation

РЕДАКТИРОВАТЬ: линия может быть удалена с помощью linetype = 0, совместимый с большинством aesthetics в ggplot2.

... + geom_smooth(method =   "lm", formula = formula, linetype = 0) + ...
0 голосов
/ 04 декабря 2018

Вы можете использовать комбинацию substitute и plotmath (https://www.rdocumentation.org/packages/grDevices/versions/3.5.1/topics/plotmath) для курсива текста -

# setup
set.seed(123)
library(ggplot2)

# dataframe
df <- data.frame(x = c(1:5), y = c(1:5))

# label
eq <- substitute(
  expr =
    paste(
      italic("y"),
      " = ",
      a,
      " + ",
      b,
      "(",
      italic("x"),
      "); ",
      italic("r") ^ 2,
      " = ",
      r2
    ),
  env = base::list(a = 1,
                   b = 2,
                   r2 = 0.9)
)

# plot
ggplot(data = df, aes(x = x, y = y)) +
  geom_point(color = "black") +
  labs(subtitle = eq)

Созданона 2018-12-04 пакетом Представ (v0.2.1)

...