2015-04-03 43 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