scale_colour_gradient与ggplot2中的scale_fill_gradient

时间:2016-08-24 16:28:42

标签: r ggplot2

我是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_gradientscale_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")

在输出中,我们将看到瓷砖的边框按密度(即红色)着色,填充颜色按照绿色着色。因此,通过这种方式,我们可以展示填充和颜色的效果。

1 个答案:

答案 0 :(得分:1)

ggplot2中,colorfill分别进行映射。 color指的是点和线颜色,而fill指的是条形填充(即内部颜色),密度填充等。如果您在fill=xyz内映射aes()然后使用scale_color_...,由于您必须使用fill控制scale_fill_...,因此无法执行任何操作。如果在这种情况下映射color,它将改变密度周围线条的颜色;然后你可以调用scale_color_...来改变它。