在R中的mosaicplot()中移动标签位置

时间:2014-09-25 22:33:52

标签: r axis-labels mosaic

在R中给出这个例子马赛克图,

## create example data frame
set.seed(56)
df1 <- data.frame(Category1 = rep(c("Category name", "Longer category name", "Cat name"), times = c(42, 19, 6)), Category2 = sample(c("Low", "Mid", "High"), 67, replace =T, prob = c(0.25, 0.40, 0.35)))

df1

## make a contingency table
table(df1)

## make the mosaic plot
mosaicplot(table(df1), color = 1:3, las = 2, ylab = "Category2", xlab = "Category1", main = "")

如何向上移动Category1标签(编辑:类别名称)以便显示完整的名称?

1 个答案:

答案 0 :(得分:1)

与@MrFlick一样,我也可以看到标签。你改变了你的情节边际吗?以下是检查方法:

par("mar")
[1] 5.1 4.1 4.1 2.1

我已粘贴在默认边距(c(底部,左侧,顶部,右侧))。如果您的尺寸较小,则可能无法为标签留出空间。要将它们重置为默认值(或任何你想要的),请执行par(mar=c(5,4,4,2)+0.1)

在任何情况下,如果你想移动标签,这里有一些例子:

mosaicplot(table(df1), color = 1:3, las = 1, main = "", xlab="", ylab="")
mtext(side = 1, "Category1", line = 0.5, col="green")
mtext(side = 1, "Category1", line = 1, col="blue")
mtext(side = 1, "Category1", line = 2, col="red")
mtext(side = 2, "Category2", line = -1, col="purple")

enter image description here

更新:要删除轴标签,请将列联表保存为对象,然后将dimnames属性设置为NA。当然,您也可以通过这种方式更改或缩写标签。例如,要删除Category1标签:

## make a contingency table
tab1 = table(df1)
dimnames(tab1)[["Category1"]] = rep(NA, length(unique(df1$Category1)))

## make the mosaic plot
mosaicplot(tab1, color = 1:3, las = 2, ylab = "Category2", 
           xlab = "Category1", main = "")

END UPDATE

您可能还需要mosaic包中的vcd功能。它更复杂,但它可以让你更好地控制情节的细节。 mosaic使用lattice而不是基础图形,因此对绘图的所有调整都需要使用latticegrid,而不是基本图形函数或参数:< / p>

library(vcd)
mosaic(table(df1), color = 1:3, las = 2, ylab = "Category2", 
       xlab = "Category1", main = "", 
       labeling_args = list(offset_varnames = c(left = 2, top=0)),
       gp = gpar(fill = 1:3))

有很多例子,请参阅this vignette