2015-09-18 53 views
1

我假设ggplot比例创建某种函数,该函数读取适当的aes值并返回coloursize等。这可以用作独立函数吗?从ggplot检索颜色 - 值映射

例如,此函数I将通过必要的参数(rangelimitshighlow等)和我想要得到的映射的值,该函数的输出将是colour/size /等

# example of usage 
HypotheticalScaleFunction(
    range = c(0,10), 
    high = '#000000', 
    low = '#222222', 
    ValueToLookup = 5 
) 
# this should return - 
"#111111" 
+1

可能的重复http://stackoverflow.com/questions/11774262/how-to-extract-the-fill-colours-from-a-ggplot-object/11774500#11774500 – Henrik

+0

不是。如果我应用了连续填充,并且想要查询原始数据集中没有的值,那么这将不起作用。 – TheComeOnMan

+1

好的,对不起,我误解了你的问题。您可能希望详细说明并提供一个最简单的示例。 – Henrik

回答

2

您可以通过通读源,在功能,规模打字找到。例如,如果您通读了ggplot2::scale_color_continuous的源代码,则会发现它使用scales程序包中的seq_gradient_pal

所以,在continious规模的颜色,我们可以定义以下功能(与ggplot使用的默认值):

ColorScaleFunction <- function(Range, high = "#56B1F7", low = "#132B43", ValueToLookup) { 
    seq_gradient_pal(low, high)((ValueToLookup - Range[1])/diff(Range)) 
} 

这导致典型的深蓝色的颜色,你在默认情况下得到的,在例如,热图。

它在你的例子上产生#161616