根据R

时间:2018-08-27 13:49:14

标签: r leaflet heatmap

我有一个数据框,每一行都有一个数字列。我想根据此列分配不同的颜色。此列的数字范围是1到152。我使用了此功能:

colors <- function(df,sp) {
check<-colorRampPalette(c("green","red"))(152)
color <- c() 
for (i in 1:nrow(sp))
{
  color <-c(color, check[df$n[df$id==as.numeric(sp[i,]$ID)])
} 
return(color)
} 

因此颜色被平均分为152个部分。但是,此列中的数据很少(大部分为1),直方图如下所示

enter image description here

如果我使用此代码,则颜色大多为绿色,几乎看不到红色。

我正在使用此功能来更改传单中的线条颜色:

leaflet() %>%
...
addPolylines(data = data,weight = '1', color=colors(nodes,data))

那么如何更改此功能以使颜色可以均匀分布,从而可以生成更多的红色,而不是绿色?

1 个答案:

答案 0 :(得分:1)

我们可以使用功能

colorQuantile

来自库传单colorNumeric。它通过分位数功能映射连续的数字数据。

colorQuantile(palette, domain, n = 4, probs = seq(0, 1, length.out = n
+ 1), na.color = "#808080", alpha = FALSE, reverse = FALSE,
right = FALSE)