Как включить объект с сохраненным текстом в выражение () для использования в графе ggplot2? - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь объединить математические символы и объекты со значениями, сохраненными в них, для отображения на графике ggplot с помощью geom_text (). Вот пример кода, связанного с моей проблемой:

# values 
diff <- "0.81"
p <- "p < .01"

# approach 1) pasting in values
temp <- data.frame(condition = c("first"), value = c(2)) %>%
  mutate(test = as.character(expression(atop(beta["2"] - beta["1"] == "-0.80", "p < 0.01")))) 

ggplot() +
      geom_bar(data = temp, aes(x = condition, y = value), stat = "identity") +
      ylim(0, 5) +
      geom_text(data = temp, x = 1, y = 4, aes(label = test), size = 7, parse = TRUE) 

# approach 2) referring to objects with values
temp <- data.frame(condition = c("first"), value = c(2)) %>%
  mutate(test = as.character(expression(atop(beta["2"] - beta["1"] == diff, p))))

ggplot() +
  geom_bar(data = temp, aes(x = condition, y = value), stat = "identity") +
  ylim(0, 5) +
  geom_text(data = temp, x = 1, y = 4, aes(label = test), size = 7, parse = TRUE) 

Подход 1 создает график, к которому я стремлюсь, но я хочу иметь возможность легко ссылаться на объекты для предоставления значений, которые будут отображаться после бета-версий. Если я выберу текущий подход 2, он не будет использовать значения, сохраненные в объектах, а только текст «diff» и «p». Есть ли способ сохранить базовую структуру подхода 1, но использовать объекты для создания нужного мне графика?

1 Ответ

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

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

mylabs <- function(diff, p) {
  sapply(mapply(function(diff, p) bquote(atop(beta["2"] - beta["1"] == .(diff), .(p))), diff, p), deparse)
}

temp <- data.frame(condition = c("first"), value = c(2)) %>%
  mutate(test = mylabs(diff, p))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...