使用data.table为ggplot创建函数

时间:2014-11-04 06:16:59

标签: r function ggplot2 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上的其他帖子,如this。到目前为止,我还没有发现其他人用data.table而不是data.frame来证明如何做到这一点

有关如何使用data.table进行此操作的任何想法吗?

0 个答案:

没有答案