高图热图中是否可以有不同的颜色图?或者将某些项目变灰?

问题描述 投票:0回答:1

我想创建一个具有两种不同类型值的热图。举个例子,让我们想象一下,我有一些动物“a1”、“a2”和“a3”以及一组身体部位长度,假设一位科学家测量了“左臂”的长度,“右臂”,“左腿”和“右腿”。

现在让我们想象一下“a2”和“a3”的手臂测量值是由实习生进行的,我们想要明确的是该测量值与其他测量值不同(例如不那么可靠)。

我能想到的一种方法是将这两个测量值稍微变灰?颜色应该还是一样的,只是不那么浓了。简单地使用另一种色标也很棒。

作为一个额外的问题,假设a1的左腿被遗忘了,那么有没有好的方法让这个元素完全变成灰色?

我使用 R 作为我的编程语言。 我更喜欢使用 highcharter 作为库,但我也可以使用plotly。

这里有一些代码,应该可以玩一下:

library(highcharter)

mat <- matrix(data=rnorm(4*3, 1,.2), nrow = 4)
rownames(mat) <- c("left arm", "right arm", "left leg", "right leg")
colnames(mat) <- c("a1", "a2", "a3")

hchart(mat, type="heatmap")

mat["left leg", "a1"] <- NA

unreliable_info_mat <- matrix(FALSE, nrow = 4, ncol = 3)
rownames(unreliable_info_mat) <- c("left arm", "right arm", "left leg", "right leg")
colnames(unreliable_info_mat) <- c("a1", "a2", "a3")
unreliable_info_mat[c("left arm", "right arm"), c("a2", "a3")] <- TRUE
unreliable_info_mat

r highcharts plotly heatmap r-highcharter
1个回答
0
投票

这里有一个选项可以在图表中拥有多个 colorAxis。基本上,您表示哪些观察结果“不可靠”,并将数据帧分成两部分。然后将每个单独的系列添加到绘图中,我们可以在

hc_colorAxis
中设置两个不同的 colorAxis。

您会注意到第二个系列有

colorAxis = 1
。从技术上讲,这意味着第二个 colorAxis,因为默认值为
colorAxis = 0

如果您有任何疑问,请告诉我。希望这与您想要实现的目标一致。

library(highcharter)

set.seed(101)
mat <- data.frame(values=round(rnorm(4*3, 1,.2),2),
                  limbs = rep(c("left arm", "right arm", "left leg", "right leg"), 3),
                  animals = rep(c("a1", "a2", "a3"), 4),
                  reliable = as.factor(sample(c(T,F), 12, replace = T)))

split_df = split(mat, mat$reliable)
names(split_df) = c("unreliable", "reliable")

highchart(type = "chart") %>%
  hc_xAxis(type = "category", categories = unique(mat$animals)) %>%
  hc_yAxis(categories = unique(mat$limbs)) %>%
  hc_add_series(split_df$unreliable, hcaes(x = animals, y = limbs, value = values), type = 'heatmap', 
                colorAxis = 1, showInLegend = T, name = "Unreliable", dataLabels = list(enabled = T)) %>%
  hc_add_series(split_df$reliable, hcaes(x = animals, y = limbs, value = values), type = 'heatmap', 
                showInLegend = T, name = "Reliable",dataLabels = list(enabled = T)) %>%
  hc_colorAxis(
    list(minColor ="powderblue", maxColor = "cornflowerblue"),
    list(minColor = "grey", maxColor = "grey")
  ) %>%
  hc_tooltip(formatter = JS("function() { return '<b>' + this.series.name + '</b><br>' + this.point.xf + ' ~ ' + 
                             this.point.yf + '<br> Value: ' + this.point.value }")) %>%
  hc_colors(c("grey","cornflowerblue")) # to update legend icon colors

例如:没有悬停

例如:显示工具提示

© www.soinside.com 2019 - 2024. All rights reserved.