【问题标题】:Mosaic plot/grid plot in black and white for dummies用于假人的黑白马赛克图/网格图
【发布时间】:2017-12-04 07:00:22
【问题描述】:

我有一个由假人组成的数据集,如下所示:

# Example data
set.seed(123)
data <- data.frame(x1 = rbinom(10, 1, 0.3),
                   x2 = rbinom(10, 1, 0.6),
                   x3 = rbinom(10, 1, 0.5))

我想创建一个马赛克图/网格图(实际上我不确定应该如何调用这样的图),其中每个 1 值显示为黑色,每个 0 值显示为白色。显示的行之间不应有空格或任何其他颜色。

我想创建的情节示例可以在this paper on page 97 中找到:

我尝试了几个不同的软件包,例如 ggplot2 或 vcd,但不幸的是我无法生成完全相同的情节。非常感谢任何对包的帮助或任何提示!

【问题讨论】:

  • @Axeman 我认为 x 轴是 x1, x2, x3。
  • x 轴是变量 1-10,所以如果您考虑我上面的示例数据,它将是 x1、x2、x3。 y 轴是行,所以在我上面的例子中它是 1:10。
  • 完美,只要你知道怎么做就很容易了。非常感谢 Axeman!

标签: r plot ggplot2 vcd


【解决方案1】:

image 函数可能是用颜色显示矩阵的最简单方法。您需要转置和反转它以使顺序正确

image(t(as.matrix(data[nrow(data):1, ])), col = c(0, 1), axes = FALSE)
axis(1, seq(0, 1, l = ncol(data)), seq_len(ncol(data)))
axis(2, seq(0, 1, l = nrow(data)), seq_len(nrow(data)))
legend(1.1, 0, c(0:1), fill = c(0, 1), xpd = TRUE)

【讨论】:

    【解决方案2】:

    这里使用的是ggplot:

    library(ggplot2)
    library(tidyr) #to convert wide to long format
    
    plotDat <- gather(data, key = "x", value = "Estimate")
    plotDat <- cbind(plotDat, y = 1:10)
    plotDat$Estimate <- as.factor(plotDat$Estimate)
    
    ggplot(plotDat, aes(x, y, fill = Estimate)) +
      geom_tile()
    

    【讨论】:

    • 非常感谢@zx8754!很高兴在 ggplot2 中有一个替代方案
    • @JoachimSchork 没问题,不过,它需要更多代码来复制简单基本 image 函数的输出。
    猜你喜欢
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    相关资源
    最近更新 更多