【发布时间】:2016-01-17 06:40:39
【问题描述】:
我正在尝试编写一个函数来生成 ggplot 图。 Heroka 帮助我让我的功能正常工作。但是现在我有一个问题,关于如何在这个函数中构建一个自动标签包装器inside。我在此看到了类似且非常有用的question,但相同的代码在函数内部不起作用。
我正在重现我当前用于生成以下 ggplot 的函数:
myfunction = function (data, Variable1) {
ggplot(data=data, aes_string(sprintf("factor(%s)",Variable1), "Variable2"))+
geom_boxplot(fill="grey", colour="black")+
labs(title = sprintf("%s and Variable2", Variable1)) +
labs (x = Variable1, y = "Variable2")
}
当我尝试执行以下操作时(请注意,我正在尝试将标签包装在 ggplot 的调用中:
myfunction = function (data, Variable1) {
ggplot(data=data, aes_string(sprintf("factor(%s)",Variable1), "Variable2"))+
geom_boxplot(fill="grey", colour="black")+
labs(title = sprintf("%s and Variable2", Variable1)) +
labs (x = Variable1, y = "Variable2")+
# adding the line to wrap the labels
scale_x_discrete(labels = function(x) str_wrap(x, width = 10))
}
它不起作用(绘图仍然生成,但好像我没有插入那条线) 我很困惑:
我想我需要将附加行中的 x 更改为我的实际变量?在这种情况下是
Variable1,但是当我这样做时它仍然不起作用既然我们还在 ggplot 调用中,这又是一个环境问题吗? (例如我们需要在函数中使用
aes_string而不是aes,因为我们在本地环境中)。但是,由于在此函数中增加了一个额外的函数,我不确定我们所处的环境以及如何实现标签换行。
【问题讨论】:
-
您能否提供一个有助于重现问题的小数据样本?标签应该是什么样子(即您要包装的标签)?