我做了这样的图:
library(reshape2)
library(ggplot2)
m <- matrix(1:64 - 32, 8)
rownames(m) <- colnames(m) <-
c(paste0("a", 1:3), paste0("b", 1:2), paste0("c", 1:3))
d <- melt(m)
gg <- ggplot(d) +
geom_tile(aes(x = Var1, y = Var2, fill = value)) +
scale_fill_gradient2()
如何以编程方式在“ a”,“ b”和“ c”组周围绘制框?
矩阵m
将始终为正方形。colnames(m)
并且rownames(m)
将永远相同。因此,这些框将覆盖整个网格,并且永远不会重叠。通常,小组人数会有所不同。
我也没有结婚ggplot2
。我对基本图形的解决方案持开放image
态度,只要它不比ggplot2
/grid
版本复杂。
我到了
d$group <- substr(d$Var1, 1, 1)
在我意识到我不知道如何进行之前。
我有的:
我想要的是:
这可能被认为是作弊,但非常简单:
# Depending on your data you may be able to generate `d2` directly
# here we need to re-order a bit
d2 <- transform(
d, V1 = substr(Var1, 1, 1),
V2=factor(substr(Var2, 1, 1), levels=letters[3:1])
)
ggplot(d2) +
geom_tile(aes(x = Var1, y = Var2, fill = value)) +
scale_fill_gradient2() +
facet_grid(V2 ~ V1, scales="free", space="free")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句