首页 > 解决方案 > 基于R中的数据密度着色

问题描述

我有一个数据框,每行都有一个数字列。我想根据这个列分配不同的颜色。这一列的数字范围从 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),直方图是这样的

在此处输入图像描述

如果我使用这个代码,颜色大多是绿色的,几乎看不到红色。

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

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

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

标签: rleafletheatmap

解决方案


我们可以使用函数

colorQuantile

来自图书馆传单colorNumeric。它通过分位数函数映射连续的数值数据。

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

推荐阅读