带R中数字的交叉列表图

带R中数字的交叉列表图,r,R,我想在交叉列表图上添加每个组合的频率编号 例如,对于mtcars示例: data("mtcars") table(mtcars$vs, mtcars$am) 我们有$vs和$am列之间的每个组合的编号。如果我直接绘制这个,我会得到4个矩形,其大小根据频率数字而变化: plot(table(mtcars$vs, mtcars$am), main = "Cross tabulation plot", xlab = "Engine (vs)

我想在交叉列表图上添加每个组合的频率编号

例如,对于
mtcars
示例:

data("mtcars")
table(mtcars$vs, mtcars$am)
我们有
$vs
$am
列之间的每个组合的编号。如果我直接绘制这个,我会得到4个矩形,其大小根据频率数字而变化:

plot(table(mtcars$vs, mtcars$am), main = "Cross tabulation plot",
     xlab = "Engine (vs)", ylab = "Transmission (am)")


是否可以优雅地在相应的矩形中打印这些频率数字?

这样,您可以在每个正方形中显示一个数字。 基本上,这个想法是计算数字的位置,以便它们适合正方形的中心

tbl <- table(mtcars$vs, mtcars$am)
prpX <- prop.table(table(mtcars$vs))
prpY <- prop.table(table(mtcars$vs, mtcars$am), margin = 1)

plot(tbl, main = "Cross tabulation plot",
     xlab = "Engine (vs)", ylab = "Transmission (am)")
text(prpX/2 * c(1,-1) + 0:1,
     prpY/2 * c(-1,-1,1,1) + c(1,1,0,0),
     tbl)

tbl太好了,如果我们想要原始数字而不是百分比?我猜,您只需要标签:
text(prpX/2*c(1,-1)+0:1,prpY/2*c(-1,-1,1)+c(1,1,0,0),标签=表格(mtcars$vs,mtcars$am)[1:4])
查看我的编辑