簡體   English   中英

如何為 R 和 plotly 中的熱圖設置分位數定義的 colors?

[英]How to set a quantile-defined colors for heatmaps in R with plotly?

我想要 plot 中的矩陣 R 和 plotly,其中色標基於分位數值。 這是一個獨立的可重現示例:

library(dplyr)
library(plotly)

# Data to plot
d <- data.frame(x = 1:10, y=1:10, z = rnorm(n = 10, mean = 0, sd = 100))

# Quantile values
qtl_val <- c(0, 0.68, 0.95, 0.99, 0.997)

# Colors to use
qtl_colors <- c(
  rgb(0,0,0),
  rgb(246/256,192/256,192/256),
  rgb(244/256,135/256,134/256),
  rgb(219/256,55/256,55/256),
  rgb(164/256,30/256,34/256))

# Function to assign a color to each quantile window
set_color <- function(z,qtl_leg){
  for( i in 1:nrow(qtl_leg)){
    min_val <- qtl_leg$val[i]
    max_val <- ifelse( !is.na(qtl_leg$lead_val[i]), qtl_leg$lead_val[i], Inf)
    if( z >= min_val & z <= max_val ) return(qtl_leg$color[i])
  }
}

qtl_leg <- data.frame(val=round(as.numeric(quantile(d$z, probs=qtl_val)))) %>%
  mutate(lead_val = lead(val)) %>%
  mutate(color = qtl_colors)

d <- d %>%
  rowwise() %>%
  mutate(color = set_color(z,qtl_leg) ) %>%
  as.data.frame()

# Draw the matrix
plot_ly(data=d, x=~x, y=~y, z=~z, color=~color, type='heatmap' )

plot 與 data.frame 中設置的 colors 不匹配,圖例很奇怪,提示工具文本也是如此。 簡而言之,我出了點問題,但我不知道是什么。

您可以使用zauto = FALSE創建自定義比例並指定zminzmax ,如下所示:

library(plotly)
library(dplyr)
plot_ly(data=d, x=~x, y=~y, z=~z, 
        color=~color, type='heatmap', 
        zauto = FALSE,
        zmin = qtl_val[1],
        zmax = qtl_val[5])

Output:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM