Символы после новой строки не отображаются с geom_text, когда parse = TRUE // неожиданная ошибка символа - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь построить регрессионную информацию о некоторых граненых точечных диаграммах с помощью geom_text. В частности, я хотел бы отобразить информацию: R2, р-значение и уравнение регрессии. Я хочу, чтобы каждый из них был в отдельных строках. Я не смог сделать это успешно, поскольку столкнулся с двумя проблемами:

  1. Мне нужно установить parse = TRUE в geom_text, чтобы верхний индекс R ^ 2 быть правильно отображен. Однако при этом символы после символа новой строки не отображаются. Этого не происходит, если parse = FALSE, но он мне нужен для надстрочного индекса. Что вызывает это поведение? Как я могу это исправить?
  2. Для уравнения регрессии, представленного как y = b + ax, я получаю неожиданный символ ошибка, указывающая на x в концеуравнение. Например, для MWE, показанного ниже, возвращается следующая ошибка:

Ошибка разбора (text = text [[i]]):: 3: 42: неожиданный символ

2: p == 1.4898364962951e-12

3: y == 8.28390564178717 + 0.165567574644319x

                                             ^

Почему я получаю эту ошибку при добавлении символав конце числа? Добавление пробела между числами и x не решает проблему. Опять же, установка parse = FALSE устраняет проблему. Я явно что-то упускаю из-за того, как parse работает.

MWE:

# Load data
cars.df <- cars

# Fit linear regression model:
fit <- lm(data = cars.df, speed ~ dist)

# Create a new dataframe to plot regression information with geom_text:
fit.labs <- data.frame(x = 100, y = 12, lab = paste0("R^2 == ",
                                                     summary(fit)$r.squared,
                                                     "\np == ",
                                                     summary(fit)$coefficients[8]))

library(ggplot2)

# Plot data + regression line + label
ggplot() +
  geom_point(data = cars.df, aes(x = dist, y = speed)) +
  geom_abline(slope = summary(fit)$coefficients[2],
              intercept = summary(fit)$coefficients[1]) +
  geom_label(data = fit.labs, aes(x = x, y = y, label = lab), parse = TRUE)

# Characters after the newline are not displayed. It does not happen if parse is set to FALSE. 

# New df to add regression equation:
fit.labs2 <- data.frame(x = 100, y = 12, lab = paste0("R^2 == ",
                                                      summary(fit)$r.squared,
                                                      "\np == ",
                                                      summary(fit)$coefficients[8],
                                                      "\ny == ",
                                                      summary(fit)$coefficients[1],
                                                      " + ",
                                                      summary(fit)$coefficients[2],
                                                      "x"))

ggplot() +
  geom_point(data = cars.df, aes(x = dist, y = speed)) +
  geom_abline(slope = summary(fit)$coefficients[2],
              intercept = summary(fit)$coefficients[1]) +
  geom_text(data = fit.labs2, aes(x = x, y = y, label = lab), parse = TRUE)
...