r - 基于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))
那么如何更改此功能以使颜色分布均匀,从而可以生成更多类似红色的颜色,而不是大多数绿色?
解决方案
我们可以使用函数
colorQuantile
来自图书馆传单colorNumeric。它通过分位数函数映射连续的数值数据。
colorQuantile(palette, domain, n = 4, probs = seq(0, 1, length.out = n
+ 1), na.color = "#808080", alpha = FALSE, reverse = FALSE,
right = FALSE)
推荐阅读
- javascript - 如何防止反应路由器多个组件
- wordpress - 重力形式场条件面临的问题
- google-analytics-api - GA4 API 中缺少浏览器版本维度
- flutter - 暗模式下的 FLUTTER 底部导航栏
- excel - 为变量的特定值添加切片器
- listview - win32 ListView CustomDraw,为什么dwDrawStage值总是等于1
- python - 为什么 numpy.nan 与 math.nan 不同?
- spring - Spring Boot 批处理框架
- metadata - 从谷歌驱动器选择文件后如何获取文件的最后修改日期
- php - Laravel 块方法返回 bool 而不是数据