如何对马赛克中的分类变量进行颜色编码

How to color code a categorical variable in a mosaic

我正在尝试显示我的分类变量之间的关系。我终于把我的数据变成了我认为是偶然事件 table

subs_count
##                [,1] [,2] [,3] [,4]
## carbohydrate      2    0   11    2
## cellulose        18    0   60    0
## chitin            0    4    0    4
## hemicellulose    21    3   10    0
## monosaccharide    3    0    0    0
## pectin            8    0    2    2
## starch            1    0    4    0

其中每一列代表一个生物体。所以对于我的情节,我输入了

barplot(subs_count, ylim = c(0, 100), col = predicted.substrate,
  xlab = "organism", ylab = "ESTs per substrate")

但是我的承印物颜色并不一致。我做错了什么?

您的数据似乎是 matrix,其行名称接近 R 中的偶然事件 table,但不完全相同。一些绘图方法对表格有额外的支持。

更重要的是,我无法 运行 您的代码,因为不清楚 predicted.substrate 是什么。如果它是一个有 7 种颜色的调色板,那么它应该可以按照您的意图进行(或者至少我认为您的意图)。

我用以下方法复制了你的数据:

subs_count <- structure(c(2, 18, 0, 21, 3, 8, 1, 0, 0,
  4, 3, 0, 0, 0, 11, 60, 0, 10, 0, 2, 4, 2, 0, 4, 0, 0, 2, 0),
  .Dim = c(7L, 4L), .Dimnames = list(c("carbohydrate", "cellulose",
  "chitin", "hemicellulose", "monosaccharide", "pectin", "starch"), NULL))

然后通过:

将它们转化为 table
subs_count <- as.table(subs_count)
names(dimnames(subs_count)) <- c("EST", "Organism")

然后我使用了 colorspace 包中的定性调色板:

subs_pal <- colorspace::qualitative_hcl(7)

你的条形图似乎是合理的:

barplot(subs_count, ylim = c(0,100), col = subs_pal,
  xlab = "organism", ylab = "ESTs per substrate", legend = TRUE)

马赛克显示(如您的标题所示)将是:

mosaicplot(t(subs_count), col = subs_pal, off = 5, las = 1, main = "")

为了可视化依赖模式(或者更确切地说是偏离独立模式),用独立模型的残差着色的马赛克图可能更有用。

mosaicplot(t(subs_count), shade = TRUE, off = 5, las = 1, main = "")

vcd 中提供了更精致的阴影马赛克显示版本(参见 doi:10.18637/jss.v017.i03)。