首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用定制预定义颜色的热图(d3heatmap?)

使用定制预定义颜色的热图(d3heatmap?)
EN

Stack Overflow用户
提问于 2017-02-16 23:34:02
回答 2查看 354关注 0票数 1

我感兴趣的是以热图的形式显示医院指标。我使用的是闪亮的,所以我喜欢交互式d3heatmap()-plots的外观和感觉(但对替代品开放)。

例如,假设我有4个医院和5个指标。不过,我想画出每间医院在每项指标上的评分,不应视乎指标的实际值而定,而应视乎分别进行的统计测试( 80%的数值可表示4/5,亦包括800/1000,两者在估计的准确性方面有很大的不同),其分类如下:

  • 高于平均水平
  • 与平均水平无差异
  • 低于平均水平

示例数据(注意实际数字没有意义):

代码语言:javascript
运行
复制
df <- data.frame(Hospital=rep(LETTERS[10:13], each=5), 
                 Indicator=rep(LETTERS[1:5], 4), 
                 Value=sample(1:10, 20, replace=T), 
                 Conclusion=sample(c("above", "not different", "below"), 20, replace=T))
df$colour[df$Conclusion == "above"] <- "green"
df$colour[df$Conclusion == "not different"] <- "grey"
df$colour[df$Conclusion == "below"] <- "red"
df

做一个我得到的d3heatmap

代码语言:javascript
运行
复制
d1 <- dcast(df, Hospital ~ Indicator, value.var = "Value")
row.names(d1) <- paste0("hosp",d1[[1]])
d3heatmap(d1[-1], dendrogram = "none")

(截图)

当我悬停在上面的时候,我得到了指标的实际分数,这是我感兴趣的。然而,现在的颜色是基于指标的实际分数,而不是我的数据中的颜色。

如何使用从我的例子数据帧颜色,同时保持可视化的指示值时,徘徊在绘图?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-17 02:47:01

谢谢HubertL!我扩展了它以得到确切的答案:

代码语言:javascript
运行
复制
# Cast to get the matric with the values to display when hovering
d1 <- dcast(df, Hospital ~ Indicator, value.var = "Value")
row.names(d1) <- paste0("hosp",d1[[1]])


# Cast to get the matrix with the colours to display
df$colour[df$Conclusion == "above"] <- 1         #green
df$colour[df$Conclusion == "not different"] <- 2 #grey
df$colour[df$Conclusion == "below"] <- 3         #red
df$colour <- as.numeric(df$colour)
d2 <- dcast(df, Hospital ~ Indicator, value.var = "colour")


# Plot heatmap using colours, and refer to the value-matrix in the 'cellnote'
d3heatmap(d2[-1], dendrogram = "none", colors=c("blue", "grey","red"), cellnote = d1[-1])

添加问题:当(在我的例子中)指示器名称很长时,有人知道如何扩展边距吗?

票数 0
EN

Stack Overflow用户

发布于 2017-02-17 00:23:21

您可以简单地使用数字来编码颜色,然后使用colors参数传递颜色以解码:

代码语言:javascript
运行
复制
df$colour[df$Conclusion == "above"] <- 1         #green
df$colour[df$Conclusion == "not different"] <- 2 #grey
df$colour[df$Conclusion == "below"] <- 3         #red

d1 <- dcast(df, Hospital ~ Indicator, value.var = "colour")

d3heatmap(d1[-1], dendrogram = "none", colors=c("green", "grey","red"))

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42286747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档