Нестандартная оценка с ggplot2 в R

У меня есть довольно простая функция ниже, которая принимает фрейм данных и столбец в этом фрейме данных в качестве аргументов. Функция отображает столбец во фрейме данных по оси Y в сравнении со столбцом «год» по оси X. Затем он отобразит значения для рассматриваемого столбца вместе с его точками на графике.

df_to_plot = data.frame(year = c(2011, 2012, 2013), data=c(0.22334, 0.345345, 0.456234))

makePlotFunc = function(df, y_var)
{
    ggplot(df, aes_(x=as.name("year"), y = as.name(y_var), group=1, label=as.name(y_var))) + geom_point() + geom_line() + geom_text()
}

makePlotFunc(df_to_plot, data)

Однако вы заметите, что в столбце «данные» много десятичных знаков. Я хочу иметь возможность округлять эти десятичные точки, чтобы они выглядели красиво, когда эти точки данных отображаются на графике. Обычно, когда НЕ используется «нестандартная оценка», это можно сделать довольно легко в geom_text() следующим образом:

geom_text(aes(round(data, 2))

Поскольку я превратил это в функцию, используя нестандартную оценку, это невозможно сделать так.

geom_text(aes_(round(as.name(y_var), 2)))

Это вызывает ошибку.

non-numeric argument to mathematical function

Я решил свою проблему, создав новый столбец во фрейме данных, который служит такой меткой.

df_to_plot = mutate(df_to_plot, label = as.character(round(data, 2)))

Тем не менее, мне все еще интересно, знает ли кто-нибудь, как я могу это сделать, используя нестандартную оценку.


person drizzle123    schedule 27.04.2018    source источник
comment
Попробуйте пока использовать bquote: geom_text(aes_(label=bquote(round(.(as.name(y_var)), 3)))). Следующая версия ggplot с поддержкой цитирования в стиле rlang.   -  person MrFlick    schedule 27.04.2018


Ответы (1)


Спасибо MrFlick за ваш ответ. Это сработало!

geom_text(aes_(label=bquote(round(.(as.name(y_var)), 3))))
person drizzle123    schedule 27.04.2018