如何在R中的格子图中设置条形标签字体大小

19

我已经创建了一个有三个面板的格子图。我可以控制坐标轴和刻度标签的字体大小,但是我还没有找到如何增加条形标签字体大小的方法。这里有一个具体的例子:

# See below for the fake data to run this code
library(lattice)
barchart(choice ~ yes+no+not.app|group, data=data, 
         stack=TRUE, col=c("green","red","blue"), 
         xlim=c(0,100), layout=c(3,1),
         scales=list(cex=c(1.4,1.4), alternating=3),
         xlab=list(label="Percent of Respondents", fontsize=20), 
         main="")

这里是代码生成的图表。请注意,除了条带标签(“Group 1”,“Group 2”,“Group 3”)之外,所有字体都很大。我已经在R-help和Stack Overflow中搜索过,但还没有解决这个问题。有人知道魔法口诀吗?

enter image description here

data = structure(list(choice = c("Choice 1", "Choice 1", "Choice 1", 
"Choice 2", "Choice 2", "Choice 2", "Choice 3", "Choice 3", "Choice 3", 
"Choice 4", "Choice 4", "Choice 4"), group = c("Group 1", "Group 2", 
"Group 3", "Group 1", "Group 2", "Group 3", "Group 1", "Group 2", 
"Group 3", "Group 1", "Group 2", "Group 3"), yes = c(23.53, 20.47, 
22.94, 16.51, 16.54, 16.51, 9.68, 13.39, 10.4, 24.48, 29.92, 
25.54), no = c(41.37, 37.01, 40.52, 48.39, 40.94, 46.94, 55.22, 
44.09, 53.06, 40.42, 27.56, 37.92), not.app = c(35.1, 42.52, 
36.54, 35.1, 42.52, 36.54, 35.1, 42.52, 36.54, 35.1, 42.52, 36.54
)), .Names = c("choice", "group", "yes", "no", "not.app"), row.names = c(NA, 
12L), class = "data.frame")

值得注意的是,在lattice中,“panel”指的是绘图区域内部,而“strips”和“labels”通常位于绘图区域之外。 - IRTFM
刚看到你的评论,已经更新了标题和正文。 - eipi10
1个回答

28

试试这个(提供示例很好):

barchart(choice ~ yes+no+not.app|group, data=data, 
     par.strip.text=list(cex=2),
     stack=TRUE, col=c("green","red","blue"), 
     xlim=c(0,100), layout=c(3,1),
     scales=list(cex=c(1.4,1.4), alternating=3),
     xlab=list(label="Percent of Respondents", fontsize=20), 
     main="")

了解如何管理条带功能,可查看:?strip.default。在strip.custom中还有其他可调节的选项。另外,可以使用useOuterStrips函数来将条带放置在侧面,详见latticeExtra程序包。


2
啊,原来是“strip”这个神奇的词。我一直在尝试各种panel.thispanel.that的变化,但都没有进展。谢谢! - eipi10
面板功能处理出现在框内的内容。所以,是的,魔术词是“strip”。我承认,我花了几年时间才学会这个魔术词。 - IRTFM
一个小注释:虽然我能够通过 trellis.par.set() 全局指定所有相似的命令(例如,par.ylab.text = list(cex = 0.8)),但这对于 par.strip.text=list(cex=2) 并不起作用。它必须在绘图命令中直接指定。有任何想法为什么会这样吗? - deca
看一下 'trellis.par.get()' 的返回值并阅读该函数的帮助页面。 - IRTFM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接