我正在试图代表R.的一座办公楼,我需要代表多层楼,但现在我需要从一层开始。有许多立方体都在一个规则的结构中。初级员工有四个小立方体(4x4),高级工程师和经理(4x6)有两个更大的立方体。一旦这些被绘制出来,我需要能够显示它们是被占用的还是免费的--通过颜色(比如红色表示占用,绿色表示可用)。这些都是一样的布局方式,大的在一端。例如,
+----+--+--+
| S |J1|J2|
+----+--+--+
<-hallway-->
+----+--+--+
| M |J3|J4|
+----+--+--+我最初以为我可以使用ggplot,只需分散每个人,但我想不出如何用geom_point捕获不同大小的立方体。我花了一些时间看地图,但似乎我不能真正利用我的平面图的常规结构--也许这真的是一条路,我利用我的常规结构构建了一张地图?R有一个概念,我应该谷歌这种结构吗?
最后,我将得到一个很长的数据文件,其中包含一个小隔间的类型、集群的x和y坐标以及一个"R“或"G”(4列)。
发布于 2016-04-08 21:26:46
您还可以编写一个低级的图形函数;它有时比从复杂的绘图中删除越来越多的组件更容易调优,

library(grid)
library(gridExtra)
floorGrob <- function(S = c(TRUE, FALSE), J = c(TRUE, FALSE, TRUE, TRUE),
draw=TRUE, newpage=is.null(vp), vp=NULL){
m <- rbind(c(1,3,4), # S1 J1 J2
c(7,7,7), # hall
c(2,5,6)) # S2 J3 J4
fills <- c(c("#FBB4AE","#CCEBC5")[c(S, J)+1], "grey90")
cellGrob <- function(f) rectGrob(gp=gpar(fill=f, col="white", lwd=2))
grobs <- mapply(cellGrob, f=fills, SIMPLIFY = FALSE)
g <- arrangeGrob(grobs = grobs, layout_matrix = m, vp = vp, as.table = FALSE,
heights = unit(c(4/14, 1/14, 4/14), "null"),
widths = unit(c(6/14, 4/14, 4/14), "null"), respect=TRUE)
if(draw) {
if(newpage) grid.newpage()
grid.draw(g)
}
invisible(g)
}
floorGrob()发布于 2016-04-08 15:11:03
怎么样?
df <- expand.grid(x = 0:5, y = 0:5)
df$color <- factor(sample(c("green", "red"), 36, replace = T))
head(df)
# x y color
# 1 0 0 green
# 2 1 0 green
# 3 2 0 green
# 4 3 0 red
# 5 4 0 green
# 6 5 0 red
library(ggplot2)
ggplot(df, aes(x, y, fill = color)) +
geom_tile() +
scale_fill_manual(name = "Is it open?",
values = c("lightgreen", "#FF3333"),
labels = c("open", "not open"))

https://stackoverflow.com/questions/36502328
复制相似问题