r - ggplot2 中的scale_colour_gradient 与scale_fill_gradient

标签 r ggplot2

我是 ggplot2 的绝对初学者,并尝试使用这个包绘制漂亮的图形。我正在阅读手册,但不明白 scale_colour_gradient()scale_fill_gradient() 之间的区别在我的分析中,我将使用“假设”进行观察,因为我不确定我的结论。

这是对我有用的原始代码:

实验1

  erupt <- ggplot(faithfuld, aes(waiting, eruptions, fill = density)) +
    geom_raster() 
  erupt

假设:它使用默认颜色(即蓝色)绘制喷发密度

我想进一步尝试 ggplot2scale_colour_gradient()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_gradientscale_color_gradient 之间有什么区别?

如果我的问题对您来说太基本了,我深表歉意。我不是专家,还有很长的路要走。


更新:经过讨论,结论如下:

实验 1 中:该图仅使用连续变量“密度”进行填充。

实验2中,我填充了“密度”,但随后覆盖了“颜色”。因此, ggplot 尝试对栅格图的边框进行着色(因为我覆盖了颜色)并且与填充无关,因为我没有覆盖任何东西。

实验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") 

修复#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") 

在输出中,我们将看到图 block 的边框根据密度(即红色)进行着色,填充颜色根据绿色进行着色。这样,我们就能够演示填充和颜色的效果。

最佳答案

ggplot2 , colorfill分别映射。 color指点和线的颜色,而 fill指条形填充(即内部颜色)、密度填充等。如果映射 fill=xyz aes()内然后使用 scale_color_... ,它不会做任何事情,因为你必须控制 fillscale_fill_... 。如果你映射color在这种情况下,它将改变密度周围线条的颜色;那么您可以调用scale_color_...来改变它。

关于r - ggplot2 中的scale_colour_gradient 与scale_fill_gradient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39128590/

相关文章:

r - 如何显示Shiny本地存储的多张图片(png)

r - BNlearn R 错误 “variable Variable1 must have at least two levels.”

r tensorflow 值错误: Column dtype and SparseTensors dtype must be compatible

r - scale_y_discrete 忽略中断/标签

r - ggplot2 增加堆叠文本标签之间的间距

r - 为什么 geom_densis 和 stat_densis(geom = "line") 给出不同的结果?

r - 在 R 中按类型对数据进行排序

r - 手动 alpha 比例 exp(-x)

R:如何向 ggplot 中的分箱箱线图添加对角线

r - ggplot图例键颜色和透明度