我绝对是初学者ggplot2
并尝试使用这个包画出漂亮的人物。我正在阅读手册,但我不明白它们之间的区别scale_colour_gradient()
vs. scale_fill_gradient()
在我的分析中,我将使用“假设”进行观察,因为我不确定我的结论。
这是对我有用的原始代码:
实验1
erupt <- ggplot(faithfuld, aes(waiting, eruptions, fill = density)) +
geom_raster()
erupt
假设:它使用默认颜色(即蓝色)绘制喷发密度
我想进一步尝试ggplot2
's scale_colour_gradient()
and scale_fill_gradient()
实验2
erupt <- ggplot(faithfuld, aes(waiting, eruptions)) +
geom_raster(aes(fill=density)) +
scale_colour_gradient(low = "white", high = "black")
erupt
现在,我得到了与实验 1 相同的图表。这是否意味着如果我在 ggplot 的美学中使用 fill= xyz,我将设置颜色渐变而不是填充渐变?为了理解我为什么问这个问题,让我们看看实验 3。
实验3
erupt <- ggplot(faithfuld, aes(waiting, eruptions)) +
geom_raster(aes(fill=density)) +
scale_fill_gradient(low = "white", high = "black")
erupt
在这里,我唯一改变的是使用scale_fill_gradient
代替scale_color_gradient
。然而,图表完全不同。它的范围从黑色到白色。
有人可以帮我了解发生了什么事吗?具体来说,我有两个问题:
a) 当我们设置 fill = xyz 时,它设置的是颜色还是填充?
b) 有什么区别scale_fill_gradient
and scale_color_gradient
?
如果我的问题对您来说太基本了,我深表歉意。我不是专家,还有很长的路要走。
更新:经过讨论,结论如下:
In 实验1:该图仅使用连续变量“密度”进行填充。
In 实验2,我填充“密度”,但然后覆盖“颜色”。因此, ggplot 尝试对栅格图的边框进行着色(因为我覆盖了颜色)并且与填充无关,因为我没有覆盖任何东西。
In 实验3,我正在填充和覆盖,所以我看到白色和黑色的情节。
为了解决这个问题,我做了两件事:
实验2:
修复#1:
ggplot(faithfuld, aes(waiting, eruptions, fill = density)) +
geom_raster(aes(colour=density)) +
scale_colour_gradient(low = "white", high = "red") +
scale_fill_gradient(low = "white", high = "green")
OR
fix #2:
ggplot(faithfuld, aes(waiting, eruptions, fill = density)) +
geom_raster(aes(colour=density)) +
scale_colour_gradient(low = "white", high = "black")
另外,为了补充 axeman 的观点,这就是我所做的:
ggplot(faithfuld, aes(waiting, eruptions, fill = density)) +
geom_tile(aes(fill=density, col=density)) +
scale_colour_gradient(low = "white", high = "red") +
scale_fill_gradient(low = "white", high = "green")
在输出中,我们将看到图块的边框根据密度(即红色)进行着色,填充颜色根据绿色进行着色。这样,我们就能够演示填充和颜色的效果。