我正在try 将水平线添加到R plotly heatmap,它将位于heatmap的几行之间.

下面是示例data.frameheatmap:

library(plotly)
set.seed(1)
df <- matrix(rnorm(18), nrow = 6, ncol = 3, dimnames = list(paste0("r",1:6),1:3)) %>%
  reshape2::melt() %>%
  dplyr::rename(row=Var1,col=Var2)
plot_ly(x = df$col, y = df$row,z = df$value,type = "heatmap")

Which gives: enter image description here

现在假设我想在"r2""r3"之间添加一条横穿整个heatmap的水平线,在"r4""r5"之间添加一条类似的线.

我不知道对应的y个位置应该是什么.

如果我的df$row岁是integer/numeric岁而不是character岁,我就能做到这一点:

library(plotly)
set.seed(1)
df <- matrix(rnorm(18), nrow = 6, ncol = 3, dimnames = list(1:6,1:3)) %>%
  reshape2::melt() %>%
  dplyr::rename(row=Var1,col=Var2)
plot_ly(x = df$col, y = df$row,z = df$value,type = "heatmap") %>%
  add_lines(y = 2.5, x = c(min(df$col)-0.5,max(df$col)+0.5), line = list(color = "black",dash = "dot",size = 5),inherit = FALSE,showlegend = FALSE) %>%
  add_lines(y = 4.5, x = c(min(df$col)-0.5,max(df$col)+0.5), line = list(color = "black",dash = "dot",size = 5),inherit = FALSE,showlegend = FALSE)

enter image description here

所以我的问题是:

  1. 如果热图的行数为character,有没有办法在行之间放置水平线?
  2. 有没有一种更紧凑的方法来添加多条水平线,而不是像我上面的代码那样显式地编码每一条?

推荐答案

我不确定是否有可能在因子类的两个级别之间划清界限.

关于你的第二个问题,我们可以使用add_segments:

library(plotly)

set.seed(1)

df <- matrix(rnorm(18), nrow = 6, ncol = 3, dimnames = list(1:6,1:3)) %>%
  reshape2::melt() %>%
  dplyr::rename(row=Var1,col=Var2)


hdf <- data.frame(y1 = c(2.5, 4.5), 
                  x1 = rep(min(df$col)-0.5, 2), x2 = rep(max(df$col)+0.5, 2))

plot_ly(x = df$col, y = df$row,z = df$value,type = "heatmap") %>%
  add_segments(data =hdf , y=~y1, yend =~y1, x=~x1, xend =~x2,
               line = list(color = "black",dash = "dot",size = 5), 
               inherit = FALSE,showlegend = FALSE)

R相关问答推荐

了解.groups的目的= dØr的摘要功能中的删除

即使声明引发错误,R函数也会在第二次try 时返回结果

使用lapply的重新定位功能

使用sensemakr和fixest feols模型(R)

在ggplot Likert条中添加水平线

使用gggrassure减少地块之间的空间

如何修复R码的置换部分?

获取一个数据库框架的摘要,该数据库框架将包含一列数据库框架,

在发布到PowerBI Service时,是否可以使用R脚本作为PowerBI的数据源?

如何改变时间图R中的悬停信息?

根据文本字符串中的值粘贴新列

使用R闪光显示所有数据点作为默认设置

将. xlsx内容显示为HTML表

从多层嵌套列表构建Tibble?

从多个可选列中选取一个值到一个新列中

来自程序包AFEX和amp;的类/函数和NICE_TABLE&冲突

R -基线图-图形周围的阴影区域

如何显示准确的p值而不是<;0.001*?

变异以按组从其他列创建具有最大和最小值的新列

如果极点中存在部分匹配,则替换整个字符串