2016-08-24 197 views
0

我是一个绝对的初学者,在ggplot2,并试图使用这个软件包绘制美丽的人物。我正在阅读手册,我不明白scale_colour_gradient()scale_fill_gradient()之间的差异。在我的分析中,我将使用“假设”进行观察,因为我不确定我的结论。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美学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:采用连续可变的 “密度” 的情节simplys罢了。

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

OR

修复#2:

ggplot(faithfuld, aes(waiting, eruptions, fill = density)) + 
geom_raster(aes(colour=density)) + 
scale_colour_gradient(low = "white", high = "black") 

此外,添加到斧头兵的角度来看,这是我做的:

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

在输出中,我们将看到瓷砖的边界得到阴影按照密度(即红色),并且填充颜色按照绿色着色。所以,这样,我们就能够展示填充和颜色的效果。

+0

http://docs.ggplot2.org/current/scale_gradient.html – Hackerman

+0

你没有任何东西映射到'color',你只有东西映射到'fill'。这就是为什么改变“颜色”的比例没有任何作用。没有什么是'color',你看到的只是'fill'。 – Axeman

+0

玩弄'geom_tile(aes(fill = density,col = density))'来了解更多。 – Axeman

回答

0

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

+0

和Axeman - 感谢您的精彩评论。我对填充和颜色做了一些研究。如果我正确理解这一点,那么在实验1中:绘图使用连续变量“密度”来简单填充。在实验2中,我正在填充“密度”,但是覆盖“颜色”。所以,ggplot试图遮蔽栅格图的边界(因为我压倒了颜色),并且与填充无关,因为我不覆盖任何东西。在实验3中,我正在填充并重写,所以我看到了白色和黑色的情节。我在正确的轨道上吗? – watchtower

+0

正是!基本上:设置'aes(color = xxx) - > scale_color _...'和/或'aes(fill = yyy) - > scale_fill _...' –

+0

这里是我为实验2所做的两个修复:修复#1 :geg_raster(aes(color = density))+ scale_colour_gradient(low =“white”,high =“red”)+ scale_fill_gradient(low =“white”):ggplot(忠诚,aes(等待,爆发,填充=密度))+ (颜色=密度))+ scale_colour_gradient(low =“white”)# 修复#2:'ggplot(忠诚,aes(等待,喷发,填充=密度))+ geom_raster(aes ,高=“黑”)'。你认为这样可以吗?但是,我仍然没有看到边界上的“颜色”效果。无论如何,我可以复制不同的边框颜色? – watchtower