R-D3热图-机具断裂

R-D3热图-机具断裂,r,colors,heatmap,R,Colors,Heatmap,我正在尝试使用d3heatmap包绘制热图。 不幸的是,我还没有成功地使用breaks=。。。如热图或热图。 这会产生有趣的结果,我甚至不确定我是否做错了什么,或者函数是否忽略了中断 例如,我尝试: breaks = c(seq(-10, -2), seq(-2, -1.65), seq(-1.65, 1.65), seq(1.65, 2), seq(2, 10) 及 与 但似乎没有什么能正常工作 有什么建议吗 以下是我的数据的dput: > dput(mat) structure(

我正在尝试使用d3heatmap包绘制热图。 不幸的是,我还没有成功地使用breaks=。。。如热图或热图。 这会产生有趣的结果,我甚至不确定我是否做错了什么,或者函数是否忽略了中断

例如,我尝试:

breaks = c(seq(-10, -2), seq(-2, -1.65), seq(-1.65, 1.65), seq(1.65, 2), seq(2, 10)

但似乎没有什么能正常工作

有什么建议吗

以下是我的数据的dput:

 > dput(mat)
 structure(c(-0.04, NA, 0.59, NA, 0.675, 0.96, 1.09, 0.445, NA, 
 0.545, NA, NA, 0.09, -1.11, NA, 0.99, 0.13, 0.215, 1.425, 0, 
 NA, 0.69, 0.805, NA, 0.69, 1.22, NA, 0.3, NA, 0.025, NA, 0.075, 
 0.36, -0.94, NA, -0.31, 0.26, 1.02, -1.19, NA, NA, -0.77, NA, 
 -1.48, 1.05, 0.48, NA, NA, NA, 1.49, -1.285, NA, 0.76, 1.14, 
 -0.62, NA, NA, NA, 0.95, NA, NA, -0.12, 0.49, NA, 2.31, NA, -0.33, 
 0.85, NA, -1.7, -1.63, NA, -1.12, 0.135, -0.18, NA, -0.245, NA, 
 -0.2, -0.2, 0.23, -0.11, NA, 0.3, -0.81, 0.04, 0.18, -0.7, 0.53, 
 0.44, -0.49, 0.28, 0.26, 0.06, 0.265, 0.21, 0.06, -0.175, 0.365, 
 0.255, 1.25, -0.35, 0.16, 0.125, 0.825, 0.08, 0.02, -0.02, 0.99, 
 0.79, -0.23, 0.06, NA, 0.36, -0.64, -0.195, 1.19, -0.29, 0.915, 
 NA, NA, NA, NA, 0.2, 0.1, NA, 0.04, 0.33, NA, 1.46, 2.36, NA, 
 -0.92, 1.295, NA, NA, 0.8, NA, 1.09, 1.45, 5.42, NA, NA, NA, 
 1.69, 3.43, NA, 0.55), .Dim = c(37L, 4L), .Dimnames = list(c("AT", 
 "BE", "BG", "CEE", "CH", "CN", "CZ", "DE", "DK", "EA", "EE", 
 "EMU", "ES", "EU", "FI", "FR", "GB", "GR", "HR", "HU", "IE", 
 "IT", "JP", "LU", "NL", "PL", "PT", "RO", "RS", "RU", "SE", "SI", 
 "SK", "TR", "UA", "UK", "US"), c("Credit Risk", "Funding and liquidity Risk", 
 "Macro Risk", "Market Risk")))
以及我正在运行的代码:

d3heatmap(abs(mat),
          dendrogram = "none",
          breaks = c(0,1.65,2,10),
          col = c("green", "yellow", "red"),
          na.rm = TRUE)

但是,使用heatmap.2的同一个函数工作得很好。

函数d3heatmap没有“breaks”参数。如果它作为参数传入,它将被默默忽略。看到了吗?热图

另一方面,gplots包中的heatmap.2函数有一个breaks参数。这就解释了行为上的差异

幸运的是,通过向d3heatmap传递适当的“colors”函数,仍然可以获得所需的行为。它的工作原理如下

首先是示例数据:

mat <- structure(c(-0.04, NA, 0.59, NA, 0.675, 0.96, 1.09, 0.445, NA, 
                   0.545, NA, NA, 0.09, -1.11, NA, 0.99, 0.13, 0.215, 1.425, 0, 
                   NA, 0.69, 0.805, NA, 0.69, 1.22, NA, 0.3, NA, 0.025, NA, 0.075, 
                   0.36, -0.94, NA, -0.31, 0.26, 1.02, -1.19, NA, NA, -0.77, NA, 
                   -1.48, 1.05, 0.48, NA, NA, NA, 1.49, -1.285, NA, 0.76, 1.14, 
                   -0.62, NA, NA, NA, 0.95, NA, NA, -0.12, 0.49, NA, 2.31, NA, -0.33, 
                   0.85, NA, -1.7, -1.63, NA, -1.12, 0.135, -0.18, NA, -0.245, NA, 
                   -0.2, -0.2, 0.23, -0.11, NA, 0.3, -0.81, 0.04, 0.18, -0.7, 0.53, 
                   0.44, -0.49, 0.28, 0.26, 0.06, 0.265, 0.21, 0.06, -0.175, 0.365, 
                   0.255, 1.25, -0.35, 0.16, 0.125, 0.825, 0.08, 0.02, -0.02, 0.99, 
                   0.79, -0.23, 0.06, NA, 0.36, -0.64, -0.195, 1.19, -0.29, 0.915, 
                   NA, NA, NA, NA, 0.2, 0.1, NA, 0.04, 0.33, NA, 1.46, 2.36, NA, 
                   -0.92, 1.295, NA, NA, 0.8, NA, 1.09, 1.45, 5.42, NA, NA, NA, 
                   1.69, 3.43, NA, 0.55), .Dim = c(37L, 4L),
                   .Dimnames = list(c("AT", "BE", "BG", "CEE", "CH", "CN", "CZ", "DE", "DK", "EA", "EE", "EMU", "ES", "EU", "FI", "FR", "GB", "GR", "HR", "HU", "IE", "IT", "JP", "LU", "NL", "PL", "PT", "RO", "RS", "RU", "SE", "SI", "SK", "TR", "UA", "UK", "US"), c("Credit Risk", "Funding and liquidity Risk", "Macro Risk", "Market Risk")))
结果如下所示:


函数d3heatmap没有“breaks”参数。如果它作为参数传入,它将被默默忽略。看到了吗?热图

另一方面,gplots包中的heatmap.2函数有一个breaks参数。这就解释了行为上的差异

幸运的是,通过向d3heatmap传递适当的“colors”函数,仍然可以获得所需的行为。它的工作原理如下

首先是示例数据:

mat <- structure(c(-0.04, NA, 0.59, NA, 0.675, 0.96, 1.09, 0.445, NA, 
                   0.545, NA, NA, 0.09, -1.11, NA, 0.99, 0.13, 0.215, 1.425, 0, 
                   NA, 0.69, 0.805, NA, 0.69, 1.22, NA, 0.3, NA, 0.025, NA, 0.075, 
                   0.36, -0.94, NA, -0.31, 0.26, 1.02, -1.19, NA, NA, -0.77, NA, 
                   -1.48, 1.05, 0.48, NA, NA, NA, 1.49, -1.285, NA, 0.76, 1.14, 
                   -0.62, NA, NA, NA, 0.95, NA, NA, -0.12, 0.49, NA, 2.31, NA, -0.33, 
                   0.85, NA, -1.7, -1.63, NA, -1.12, 0.135, -0.18, NA, -0.245, NA, 
                   -0.2, -0.2, 0.23, -0.11, NA, 0.3, -0.81, 0.04, 0.18, -0.7, 0.53, 
                   0.44, -0.49, 0.28, 0.26, 0.06, 0.265, 0.21, 0.06, -0.175, 0.365, 
                   0.255, 1.25, -0.35, 0.16, 0.125, 0.825, 0.08, 0.02, -0.02, 0.99, 
                   0.79, -0.23, 0.06, NA, 0.36, -0.64, -0.195, 1.19, -0.29, 0.915, 
                   NA, NA, NA, NA, 0.2, 0.1, NA, 0.04, 0.33, NA, 1.46, 2.36, NA, 
                   -0.92, 1.295, NA, NA, 0.8, NA, 1.09, 1.45, 5.42, NA, NA, NA, 
                   1.69, 3.43, NA, 0.55), .Dim = c(37L, 4L),
                   .Dimnames = list(c("AT", "BE", "BG", "CEE", "CH", "CN", "CZ", "DE", "DK", "EA", "EE", "EMU", "ES", "EU", "FI", "FR", "GB", "GR", "HR", "HU", "IE", "IT", "JP", "LU", "NL", "PL", "PT", "RO", "RS", "RU", "SE", "SI", "SK", "TR", "UA", "UK", "US"), c("Credit Risk", "Funding and liquidity Risk", "Macro Risk", "Market Risk")))
结果如下所示:


您能提供一个最小的、可重复的示例吗?刚才提供了DPUT如果您的中断也指定为负值,为什么要运行absmat?我不认为这是必要的,因为你的休息是对称的,不是吗?我只是尝试了几个规格,在最后一个,我使用了absmat,只有绿色,黄色和红色,以更清楚地看到它。但是这应该没有什么区别,是的。热图实际上是有效的,我想你想要的是离散的而不是连续的颜色,对吗?如果是这样,根据文档,可以使用包装秤来实现这一点。顺便说一句,如果你想确保有人收到你的回复,用@然后用用户名ping他们。你能提供一个最小的、可重复的例子吗?只提供了dput如果你的中断也被指定为负值,为什么还要运行absmat?我不认为这是必要的,因为你的休息是对称的,不是吗?我只是尝试了几个规格,在最后一个,我使用了absmat,只有绿色,黄色和红色,以更清楚地看到它。但是这应该没有什么区别,是的。热图实际上是有效的,我想你想要的是离散的而不是连续的颜色,对吗?如果是这样,根据文档,可以使用包装秤来实现这一点。顺便说一句,如果你想确保某人收到你的回复,请先用@然后用用户名ping他们。好的,现在我遇到了下一个问题:如果我的数据的最小值或最大值大于或小于阈值(例如,我的最小值为0.5,但阈值为0),该怎么办?WhiteViking有什么解决方案吗?好的,现在我遇到了下一个问题:如果我的数据的最小值或最大值大于或小于阈值(例如,我的最小值为0.5,但阈值为0),该怎么办?WhiteViking有什么解决方案吗?
mat <- structure(c(-0.04, NA, 0.59, NA, 0.675, 0.96, 1.09, 0.445, NA, 
                   0.545, NA, NA, 0.09, -1.11, NA, 0.99, 0.13, 0.215, 1.425, 0, 
                   NA, 0.69, 0.805, NA, 0.69, 1.22, NA, 0.3, NA, 0.025, NA, 0.075, 
                   0.36, -0.94, NA, -0.31, 0.26, 1.02, -1.19, NA, NA, -0.77, NA, 
                   -1.48, 1.05, 0.48, NA, NA, NA, 1.49, -1.285, NA, 0.76, 1.14, 
                   -0.62, NA, NA, NA, 0.95, NA, NA, -0.12, 0.49, NA, 2.31, NA, -0.33, 
                   0.85, NA, -1.7, -1.63, NA, -1.12, 0.135, -0.18, NA, -0.245, NA, 
                   -0.2, -0.2, 0.23, -0.11, NA, 0.3, -0.81, 0.04, 0.18, -0.7, 0.53, 
                   0.44, -0.49, 0.28, 0.26, 0.06, 0.265, 0.21, 0.06, -0.175, 0.365, 
                   0.255, 1.25, -0.35, 0.16, 0.125, 0.825, 0.08, 0.02, -0.02, 0.99, 
                   0.79, -0.23, 0.06, NA, 0.36, -0.64, -0.195, 1.19, -0.29, 0.915, 
                   NA, NA, NA, NA, 0.2, 0.1, NA, 0.04, 0.33, NA, 1.46, 2.36, NA, 
                   -0.92, 1.295, NA, NA, 0.8, NA, 1.09, 1.45, 5.42, NA, NA, NA, 
                   1.69, 3.43, NA, 0.55), .Dim = c(37L, 4L),
                   .Dimnames = list(c("AT", "BE", "BG", "CEE", "CH", "CN", "CZ", "DE", "DK", "EA", "EE", "EMU", "ES", "EU", "FI", "FR", "GB", "GR", "HR", "HU", "IE", "IT", "JP", "LU", "NL", "PL", "PT", "RO", "RS", "RU", "SE", "SI", "SK", "TR", "UA", "UK", "US"), c("Credit Risk", "Funding and liquidity Risk", "Macro Risk", "Market Risk")))
palette <- c("blue", "green", "red")
mi <- min(mat, na.rm = TRUE)
ma <- max(mat, na.rm = TRUE)
breaks <- c(mi, 0, 2, ma)
install.package('scales') # if needed
library(scales)
colorFunc <- col_bin(palette, bins = rescale(breaks))
d3heatmap(mat, dendrogram = "none", colors = colorFunc, na.rm = TRUE)