我是ggplot2
中的绝对初学者,并尝试使用此包绘制精美的数字。我正在阅读手册,但我不理解scale_colour_gradient()
与scale_fill_gradient()
之间的区别。在我的分析中,我将使用“假设”进行观察,因为我不确定我的结论。
以下是适用于我的原始代码:
实验1
erupt <- ggplot(faithfuld, aes(waiting, eruptions, fill = density)) +
geom_raster()
erupt
假设:它使用默认颜色(即蓝色)绘制火山喷发的密度
我想进一步尝试ggplot2
的{{1}}和scale_colour_gradient()
实验2
scale_fill_gradient()
现在,我得到了与实验1相同的图形。这是否意味着如果我在ggplot的美学中使用fill = xyz,我设置颜色渐变而不填充渐变?要理解为什么我这么问,让我们看看实验3。
实验3
erupt <- ggplot(faithfuld, aes(waiting, eruptions)) +
geom_raster(aes(fill=density)) +
scale_colour_gradient(low = "white", high = "black")
erupt
在这里,我唯一改变的是使用 erupt <- ggplot(faithfuld, aes(waiting, eruptions)) +
geom_raster(aes(fill=density)) +
scale_fill_gradient(low = "white", high = "black")
erupt
代替scale_fill_gradient
。但是,图表完全不同。范围从黑色到白色。
有人可以帮我理解发生了什么吗?具体来说,我有两个问题:
a)当我们设置fill = xyz时,它是设置颜色还是填充?
b)scale_color_gradient
和scale_fill_gradient
之间的区别是什么?
如果我的问题听起来太基本了,我道歉。我不是专家,还有很长的路要走。
更新:经过讨论,结论如下:
在实验1 中:使用连续变量“density”简化填充。
在实验2 中,我填写“密度”但是然后覆盖“颜色”。所以,ggplot试图遮蔽栅格图的边界(因为我重写颜色)并且与填充无关,因为我没有覆盖任何东西。
在实验3 中,我正在填充并覆盖,所以我看到了白色和黑色的情节。
要解决这个问题,我做了两件事:
实验2 : 修复#1:
scale_color_gradient
或
修复#2:
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")
另外,为了增加axeman的观点,这就是我所做的:
ggplot(faithfuld, aes(waiting, eruptions, fill = density)) +
geom_raster(aes(colour=density)) +
scale_colour_gradient(low = "white", high = "black")
在输出中,我们将看到瓷砖的边框按密度(即红色)着色,填充颜色按照绿色着色。因此,通过这种方式,我们可以展示填充和颜色的效果。
答案 0 :(得分:1)
在ggplot2
中,color
和fill
分别进行映射。 color
指的是点和线颜色,而fill
指的是条形填充(即内部颜色),密度填充等。如果您在fill=xyz
内映射aes()
然后使用scale_color_...
,由于您必须使用fill
控制scale_fill_...
,因此无法执行任何操作。如果在这种情况下映射color
,它将改变密度周围线条的颜色;然后你可以调用scale_color_...
来改变它。