首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scale_colour_gradient与scale_fill_gradient在ggplot2

scale_colour_gradient与scale_fill_gradient在ggplot2
EN

Stack Overflow用户
提问于 2016-08-24 16:28:42
回答 1查看 10.7K关注 0票数 2

我是一个绝对的初学者在ggplot2和试图绘制美丽的数字使用这个软件包。我正在阅读手册,在我的分析中我不理解scale_colour_gradient()scale_fill_gradient()之间的区别,我将使用“假设”来进行观察,因为我不确定我的结论。

下面是对我有用的原始代码:

实验1

代码语言:javascript
复制
  erupt <- ggplot(faithfuld, aes(waiting, eruptions, fill = density)) +
    geom_raster() 
  erupt

假说:用默认颜色(即蓝色)绘制喷发的密度。

我想进一步研究ggplot2scale_colour_gradient()scale_fill_gradient()的实验。

实验2

代码语言:javascript
复制
 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

代码语言:javascript
复制
  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。然而,图是完全不同的。从黑色到白色不等。

有人能帮我了解一下发生了什么吗?具体来说,我有两个问题:

当我们设置fill = xyz时,它是设置颜色还是设置填充?

( b) scale_fill_gradientscale_color_gradient的区别是什么?

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

更新:经过讨论,得出的结论如下:

实验1中,:使用连续变量“密度”填充图简单。

实验2中,我填充“密度”,然后覆盖“颜色”。因此,ggplot试图对栅格图的边框进行阴影(因为我正在覆盖颜色),并且与填充无关,因为我没有覆盖任何内容。

实验3中,我正在填充和覆盖,所以我看到了白色和黑色的情节。

为了解决这个问题,我做了两件事:

实验2:fix #1:

代码语言:javascript
复制
    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:

代码语言:javascript
复制
    ggplot(faithfuld, aes(waiting, eruptions, fill = density)) + 
geom_raster(aes(colour=density)) + 
scale_colour_gradient(low = "white", high = "black")

另外,为了补充axeman的观点,下面是我所做的:

代码语言:javascript
复制
  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") 

在输出中,我们将看到瓷砖的边框按照密度(即红色)被阴影化,填充颜色按照绿色得到阴影。这样,我们就可以展示填充和颜色的效果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-24 17:04:44

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39128590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档