Неправильная метка оси при передаче имени столбца в функции ggplot - PullRequest
1 голос
/ 20 февраля 2020

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

library(tidyverse)
attach(mpg)

plot_func <- function(col_name) {
  ggplot(mpg,aes(x = col_name, fill = class)) +
    geom_bar() 
}

plot_func(drv)

plot_function

Есть ли в любом случае изменить ось х метка от col_name до drv. Я пробовал ниже, но это не работает.

plot_func("drv")

Ответы [ 2 ]

0 голосов
/ 20 февраля 2020

Вам просто нужно использовать get() в своей функции, чтобы она могла быть распознана как переменная в aes(), а распознаваться как строка символов в xlab():

library(tidyverse)
attach(mpg)

plot_func <- function(col_name) {
  ggplot(mpg,aes(x = get(col_name), fill = class)) +
    geom_bar() +
    xlab(col_name)
}

plot_func("drv")

enter image description here

0 голосов
/ 20 февраля 2020

Передача drv в виде строки работает, если вы сначала изменили ее на символ, а затем заключили в кавычки.

library(tidyverse)
attach(mpg)

plot_func <- function(col_name) {
  col_name <- rlang::sym(col_name)
  ggplot(mpg,aes(x = !!col_name, fill = class)) +
    geom_bar() 
}

plot_func("drv")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...