在 R 中绘制二维表格时,我希望更好地控制轴标签的大小和位置,但表格对象的绘制规则似乎与数据框的工作方式不同。为了使我的问题具体化,我在此消息的末尾粘贴了虚假数据,使用dput()
. 运行该代码将创建在dept.table
下面的绘图代码中使用的对象。
当您plot
在 R 中的 2D 表上运行时,它会创建一个马赛克图,如下所示:
plot(dept.table,
col=c("yellow","blue","red"),
las=1,
cex=.7,
dir=c("h","v"),
off=c(8,4))
我想对该调用创建的图中的轴标签进行三处更改。
首先,交替顶部的“大一”、“大二”等标签的高度,使它们不重叠(我知道我可以缩短它们,但我也想弄清楚这一点以供将来参考,因为缩短标签并不总是很方便)。我想关闭轴标签并使用该text()
功能手动添加它们。但是,在绘制表格对象时添加xaxt = 'n'
调用plot
显然不起作用(R 给出了“额外的参数 'xaxt' 将被忽略”消息)。
另一种选择是通过设置旋转 x 轴标签las=2
。但是,我更喜欢将标签水平放置以便于阅读。不过,我应该注意,当我设置时las=2
,“研究生”标签会重叠到绘图区域上。
所以这里有几个问题:
- 如何关闭 x 轴标签的绘图以便手动添加标签?
- 更好的是,有没有一种更优雅的方法可以让标签上下交替,这样它们就不会重叠,而不必手动设置每个标签的位置?
- 如果标签与绘图区域重叠,有没有办法(除了缩短标签)来消除重叠?
有没有办法为 x 轴和 y 轴标签设置不同的文本大小?我想要制作的实际绘图有更多的部门(垂直轴),所以我想为 y 轴使用比 x 轴更小的文本大小。轴文本大小的唯一选项似乎是
cex
,它调整两个轴。有没有办法单独调整每个轴?y 轴标签左对齐。有没有办法让他们正确合理,所以他们会靠近情节区域?
顺便说一句,虽然我用基本图形制作了这个图,但我很想知道是否有更好的方法可以用 lattice、ggplot2 或其他包来完成。
dept.table = structure(c(10, 15, 20, 200, 5, 15, 35, 200, 49, 15, 25, 20,
250, 5, 12, 34, 150, 30, 50, 108, 75, 800, 32, 39, 135, 400,
195, 80, 99, 64, 700, 47, 41, 134, 350, 160, 5, 10, 5, 110, 5,
4, 10, 30, 13), .Dim = c(9L, 5L), .Dimnames = structure(list(
c("Anthropology", "Economics", "Mathematics", "Business Administration",
"Geography", "Special Education, & Deaf Studies", "History",
"Kinesiology & Health Science", "Family & Consumer Sciences"
), c("Freshman", "Sophomore", "Junior", "Senior", "Graduate Student"
)), .Names = c("", "")), class = "table")