我感兴趣的是以热图的形式显示医院指标。我使用的是闪亮的,所以我喜欢交互式d3heatmap()
-plots的外观和感觉(但对替代品开放)。
例如,假设我有4个医院和5个指标。不过,我想画出每间医院在每项指标上的评分,不应视乎指标的实际值而定,而应视乎分别进行的统计测试( 80%的数值可表示4/5,亦包括800/1000,两者在估计的准确性方面有很大的不同),其分类如下:
示例数据(注意实际数字没有意义):
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
:
d1 <- dcast(df, Hospital ~ Indicator, value.var = "Value")
row.names(d1) <- paste0("hosp",d1[[1]])
d3heatmap(d1[-1], dendrogram = "none")
(截图)
当我悬停在上面的时候,我得到了指标的实际分数,这是我感兴趣的。然而,现在的颜色是基于指标的实际分数,而不是我的数据中的颜色。
如何使用从我的例子数据帧颜色,同时保持可视化的指示值时,徘徊在绘图?
发布于 2017-02-17 02:47:01
谢谢HubertL!我扩展了它以得到确切的答案:
# 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])
添加问题:当(在我的例子中)指示器名称很长时,有人知道如何扩展边距吗?
发布于 2017-02-17 00:23:21
您可以简单地使用数字来编码颜色,然后使用colors
参数传递颜色以解码:
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"))
https://stackoverflow.com/questions/42286747
复制相似问题