【问题标题】:Coloring based on data density in R基于R中的数据密度着色
【发布时间】:2018-08-27 13:49:13
【问题描述】:

我有一个数据框,其中每一行都有一个数字列。我想根据这个列分配不同的颜色。此列的数字范围为 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))

那么我怎样才能改变这个功能,使颜色分布均匀,从而产生更多的红色,而不是绿色呢?

【问题讨论】:

  • 您可以使用对数来缩放值。
  • 如果你愿意使用ggplot。这个答案可能会对您有所帮助:stackoverflow.com/a/46389490/3243875
  • @MonteCarlo 实际上我正在使用它来进行传单可视化,所以我无法重新缩放,对数据进行排序。我已经更新了帖子,你还有什么想法吗?

标签: r leaflet heatmap


【解决方案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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多