R ggplot2:手动设置填充颜色而没有“填充”美感?

Den*_*eau 1 r ggplot2

假设使用 ggplot2 创建的小提琴图只有一个因素(在水平轴上)。该图显示无色小提琴,因为 x 轴使用单因素。

例如,这个快速 MWE:

oneplot <- ggplot(ToothGrowth, aes(x=dose, y=len)) +
  geom_violin()
oneplot
Run Code Online (Sandbox Code Playgroud)

之后可以设置填充颜色吗?在我的实际设置中,情节是通过负责多种事物的大型程序生成的,并且它不分配“填充”美学;它只是提供了一个可以在事后使用附加图形指令(例如scale_fill_manual.

我希望我可以添加一些指令,例如,

oneplot + scale_fill_manual(breaks = c(0.5,1,2), values = c("orange", "purple","blue"))
Run Code Online (Sandbox Code Playgroud)

但目前,馅料完全无色!

Axe*_*man 5

不太为人所知,但您aes也可以用作附加绘图组件。

所以:

oneplot <- ggplot(ToothGrowth, aes(x=factor(dose), y=len)) +
  geom_violin()
oneplot
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

oneplot + aes(fill = supp)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这确实假设您的填充变量存在于数据中,因此supp必须存在于ToothGrowth. 但是,我们也可以使用特殊运算符更新数据组件%+%

oneplot %+% filter(ToothGrowth, dose < 2) + aes(fill = supp)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

当对同一图进行细微变化时,这些技术非常有用。定义一次大型结构,然后更新每个图的数据或美观。