Создать функцию ggplot с помощью data.table

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

Довольно хорошо все мои данные находятся в структурах data.table, которые я хочу передать в свою функцию, чтобы создать график.

Воспроизводимый пример

library(ggplot2)
library(gtable)
library(grid)
grid.newpage()

dt.diamonds <- as.data.table(diamonds)

d1 <- dt.diamonds[,list(revenue = sum(price),
                        stones = length(price)),
                  by=clarity]

setkey(d1, clarity)

mybarchart <- function(data, xdata, ydata, xlabel="", ylabel="", myfill="", myscale="comma") {
ggplot(data, aes(x=xdata,y=ydata, fill=myfill)) +
geom_bar(stat="identity") +
labs(x=xlabel, y=ylabel) +
scale_y_continuous(labels=myscale, expand=c(0,0)) + 
scale_fill_identity(name="") + 
theme_bw()
}

mybarchart(d1, "clarity", "revenue")
#or
mybarchart(d1, "clarity", "revenue", "clarity", "revenue", "red", "dollar")

Ошибка, которую я получаю, это Error in eval(expr, envir, enclos) : object 'xdata' not found, и я подозреваю, что это потому, что я использую data.table, а не data.frame.

Мой подход к подобным функциям принимался из таких примеров, как this и проверки других сообщений на SO как это. Пока еще я не нашел никого, кто продемонстрировал бы, как это сделать с помощью data.table, а не с data.frame

Любые идеи, как сделать эту работу с data.table?