本文介绍了R中的离散色条的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试绘制带有R的热图.这是可重现的示例:

I am trying to produce a Heatmap with R plotly. This is the reproducible example:

test <- structure(list(s1 = c(0L, 0L, 1L, 0L, 1L, 1L), s2 = c(1L, 1L,
0L, 1L, 0L, 0L), s3 = c(0L, 0L, 0L, 0L, 0L, 0L), s4 = c(0L, 0L,
0L, 0L, 0L, 0L), s5 = c(0L, 0L, 0L, 0L, 0L, 0L), s6 = c(0L, 0L,
0L, 0L, 0L, 0L)), .Names = c("s1", "s2", "s3", "s4", "s5", "s6"
), row.names = c("5HT2 type receptor mediated signaling pathway",
"5HT3 type receptor mediated signaling pathway", "5-Hydroxytryptamine degredation",
"Alpha adrenergic receptor signaling pathway", "Alzheimer disease-amyloid secretase pathway",
"Angiogenesis"), class = "data.frame")

以及用于以热图方式生成热图的代码:

And the code to produce the heatmap in plotly:

f1 <- list(
    family = "Arial, sans-serif",
    size = 5,
    color = "lightgrey")

f2 <- list(
    family = "Old Standard TT, serif",
    size = 10,
    color = "black")

a <- list(
  title = "",
  titlefont = f1,
  showticklabels = TRUE,
  tickangle = 45,
  tickfont = f2,
  exponentformat = "E")

plot_ly(z = as.matrix(test),
        zmin=0,
        zmax=1,
        x = colnames(test),
        xgap = 2,
        y = rownames(test),
        ygap =2,
        type = "heatmap",
        colorbar=list(ypad = 30, tickmode="array", tickvals = c(0,1), color = 2, autocolorscale = F )) %>%
  layout(xaxis = a,
         margin = list(l =500, r = 10, b = 200, t = 10))

如您所见,生成的图具有连续的比例.我发现了这个 StackOverflow问题,作者问了类似的问题问题.我试图复制答案提供的解决方案,但无法深入了解它.您能告诉我如何将刻度设置为离散颜色而不是连续颜色吗?

As you see, the produced plot has a scale that is continuous. I have found this StackOverflow question where the author asked a similar question. I tried to replicate the solutions provided by the answers but I couldn't get to the bottom of it. Could you please tell me how to set the scale to discrete instead of continuous color ?

谢谢

添加了"a"变量定义

Added "a" variable definition

推荐答案

您需要定义一个色标,如下所示:

You need to define a color scale as follows:

colorScale <- data.frame(z=c(0,0.5,0.5,1),col=c("#440053","#440053","#FDE624","#FDE624"))
colorScale$col <- as.character(colorScale$col)

plot_ly(z = as.matrix(test),
        x = colnames(test),
        xgap = 2,
        y = rownames(test),
        ygap =2,
        type = "heatmap",
        colorscale=colorScale ,
        colorbar=list(ypad = 30, tickvals=c(0.25,0.75), ticktext=c(0,1))) %>%
  layout(xaxis = a,
         margin = list(l =500, r = 10, b = 200, t = 10))

这篇关于R中的离散色条的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-29 05:06