2015-04-03 40 views
1

当试图使用list(cex=2)调整directlabels中的字体大小时,该函数会不必要地为每个单个点添加标签。使用默认放置方法调整格子的直接标签的字体大小

library(lattice) 
library(directlabels) 
foo <- data.frame(x=1:10, y=c(1:5, (1:5)^2), z=c(1:10)) 
direct.label(xyplot(y + z ~ x, foo, type=c('l','g')), 
       list(cex=2)) 

我宁愿默认标签位置(每组一个标签)附带的普通呼叫:

direct.label(xyplot(y + z ~ x, foo, type=c('l','g'))) 

指定位置的方法,如下面first.points,给出了每个所期望的一个标签组,但这与我之后的默认标签放置方法不同。

direct.label(xyplot(y + z ~ x, foo, type=c('l','g')), 
       list("first.points", cex=2)) 

有谁知道哪个位置方法重现了默认的自动布局方法吗?还是有另一种方法来更改标签字体大小而不指定位置方法?

回答

2

在这种情况下使用的方法是"lines2"

direct.label(xyplot(y + z ~ x, foo, type=c('l','g')), 
      list("lines2", list(cex=2))) 

enter image description here

仅供参考,我想通了这一点,采取了快速看一下getAnywhere("direct.label.trellis"),其中指出我朝着panel.superpose.dl()。要了解在这行:

if (is.null(method)) 
    method <- default.picker("trellis") 

我做debug(panel.superpose.dl)什么方法选择,跑了你的第二个代码块中的代码,并通过加强与调试,直到我可以检查哪些方法得到了由default.picker()采摘。

+0

非常感谢您的思考过程。这表明,在调整字体大小的同时,没有简单的方法来保持方法选择的自动化,但它确实缩小了一些默认函数的范围,包括'lines2','maxvar.qp'和'maxvar.points',它们在default.picker(“trellis”)调用get(“defaultpf.trellis”)''内部显示。呼! – Bryan 2015-04-05 00:55:24

+0

是的,它真的不应该很难有自动/启发式选择放置方法**和**稍微调整图形参数。可能值得给包装作者一个提示,尤其是如果你深入一点,可以提出一个简单的解决方案。 – 2015-04-06 01:32:37