Как объединить курсив и не курсив компоненты вызова `geom_text`.Добавьте метки `geom_text` к ряду точечных диаграмм` facet_grid` - PullRequest
1 голос
/ 26 июня 2019

Я хотел бы включить текстовую метку, которая указывает коэффициент корреляции для серии facet_wrap ped scatterplots (например: "r = -0.52").

Так что мои диаграммы рассеяния выглядят примерно так:

library(tidyverse)
df <- mtcars
df %>% 
  ggplot(aes(y = mpg, x = hp)) +
  geom_point(colour = "blue") + 
  facet_grid(~ factor(cyl))

Создано в 2019-06-26 пакетом Представить (v0.2.1)

Затем я попытался создать три отдельных коэффициента корреляции после группировки, и я хотел бы, чтобы метка отображалась на диаграмме, но это не совсем верно.Я хотел бы сказать что-то вроде: "r = -0,52"

library(tidyverse)
df <- mtcars
df2 <- df %>% 
  group_by(cyl) %>% 
  summarise(correlation = cor(y = mpg, x = hp, use = "pairwise.complete.obs"))
df2
#> # A tibble: 3 x 2
#>     cyl correlation
#>   <dbl>       <dbl>
#> 1     4      -0.524
#> 2     6      -0.127
#> 3     8      -0.284
df <- left_join(df, df2, by = "cyl")

df %>% 
  ggplot(aes(y = mpg, x = hp)) +
  geom_point(colour = "blue") +
  geom_text(x = 200, y = 30, label = expression(paste(italic(r), " = ", df$correlation))) +
  facet_grid(~ factor(cyl))
#> Warning in is.na(x): is.na() applied to non-(list or vector) of type
#> 'expression'

Создано в 2019-06-26 представпакет (v0.2.1)

Ответы [ 2 ]

3 голосов
/ 26 июня 2019

Вы можете сделать

  geom_text(x = 200, y = 30, 
            label = paste0("italic(r) == ", df$correlation), parse = TRUE) 

Для отображения округленной корреляции:

  geom_text(x = 200, y = 30, 
            label = paste0("italic(r) == ", round(df$correlation,2)), parse = TRUE) 
1 голос
/ 26 июня 2019

Попробуйте поставить geom_text после facet_grid, чтобы R знал, где его поставить:

df %>% 
  ggplot(aes(y = mpg, x = hp)) +
  geom_point(colour = "blue") +
  facet_grid(~ factor(cyl)) +
geom_text(x = 200, y = 30, 
          label = paste0("italic(r) == ", round(df$correlation,2)), parse = TRUE)

enter image description here

...