【发布时间】:2012-05-30 10:33:30
【问题描述】:
在 R 中绘制二维表格时,我希望更好地控制轴标签的大小和位置,但表格对象的绘制规则似乎与数据框的工作方式不同。为了使我的问题具体化,我使用dput() 在此消息的末尾粘贴了虚假数据。运行该代码将创建在下面的绘图代码中使用的dept.table 对象。
当您在 R 中的二维表上运行 plot 时,它会创建一个马赛克图,如下所示:
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' 将被忽略”消息)。
另一个选项是通过设置 las=2 来旋转 x 轴标签。但是,我更喜欢将标签水平放置以便于阅读。不过,我应该注意,当我设置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")
【问题讨论】:
-
我从未使用过它,但您可能会在
vcd包中找到一些有用的东西——“vcd”用于“可视化分类数据”
标签: r formatting plot ggplot2