2013-06-26 4 views
23

나는 웹 (또는 위컴의 책)에 대한 답변을 찾을 수없는 빠른 질문의 단위 :ggplot2 - 크기

ggplot2의 크기 인수의 단위는 무엇입니까? 예를 들어, geom_text (size = 10) - 10 단위로 무엇입니까?

EDIT가 : 동일한 질문 ggsave에서 유닛을 기본 적용 (높이 = 10, 폭 = 10)

+0

지금까지 텍스트 크기가 포인트 (글꼴 크기와 같음)라고 생각했습니다. 이것은 단순한 설명 임에도 불구하고 여전히 사실입니까? 'pdf()','postscript()'등에서'height'와'width'는 인치 단위로 주어 지므로'ggsave'도 인치를 사용한다고 가정하는 것은 잘못입니까? – MrGumble

답변

29

답은 다음과 같습니다. 단위는 점입니다. grid 패키지의 fontsize 단위입니다. ?unit, 우리는 다음과 같은 정의

"points" Points. There are 72.27 points per inch. 

을 찾을 수 있습니다 (하지만 밀접하게 관련 "bigpts"Big Points. 72 bp = 1 in. 주) 1/0.352777778로 정의 된 매직 넘버 ggplot2:::.pt에 의해 글꼴 크기를 곱합니다 내부적으로

ggplot2을 . 여기

데모, 나는 같은 크기의 그리드 ggplot2를 사용하여 편지 작성 : 덕분에 @baptiste하는

library(grid) 
library(ggplot2) 
ggplot(data=data.frame(x=1,y=1,label=c('A'))) + 
    geom_text(aes(x,y,label=label),size=100) 
## I divide by the magic number to get the same size. 
grid.text('A',gp=gpar(fontsize=100/0.352777778,col='red')) 

enter image description here

부록을

은 "매직 넘버"(aaa-constants.r에 정의 된 .pt <-1/0.352777778)은 실제로 "점"과 "mm"사이의 변환 요소입니다. t 모자는 1/72 * 25.4 = 0.352777778입니다. 불행하게도 grid은 "pts"와 "bigpts"의 차이를 미묘하게 구분합니다. 이유는 convertUnit(unit(1, "pt"), "mm", valueOnly=TRUE)이 약간 다른 값 0.3514598을 제공하는 이유입니다.

+0

좋은 답변입니다. 이것이 왜 행해졌는지에 대한 나의 무지가 될 수 있지만, 이것은 약간 hackish하지 않습니까? – thelatemail

+0

크기를 지정하는 동안 좋은 연습은 무엇입니까? 너무 자주 나는 내 질문의 원래 동기 인 어느 크기가 적절한 지 궁금해합니다. 멋진 데모에 다시 한번 감사드립니다! @thelatemail thanks. – Heisenberg

+1

마키 넘버의 분할에 대해 이야기 해 주시겠습니까? 그것은 더러운 구현처럼 보입니다. 그러나 나는 그것이 타협이라고 생각하지 않습니다. 참고 사항 : 1) ggplot2에 상수가 많이 없습니다. 2) 텍스트를 다룰 때 당신은 뭔가를 할 의무가 있습니다. 이것 (strheight()과 strWidth() 기본 플롯 참고) ... 그러나 우리는 ggplot2 실력자들로부터 더 나은 설명을 얻을 것이라고 생각합니다 ... – agstudy

2

?aes_linetype_size_shape

# Size examples 
# Should be specified with a numerical value (in millimetres), 
# or from a variable source 

height와 ggsave에 width 가입일 ?par

에서 par("din") 관련
din 

    R.O.; the device dimensions, (width, height), in inches. See also dev.size, 
    which is updated immediately when an on-screen device windows is re-sized. 

그래서 size에서 aes은 밀리미터이고 ggsaveheight과 은 인치 단위입니다.

6

'격자'와 같은 'ggplot2'패키지는 grid 패키지에 내장되어 있습니다.

?grid::unit 
?grid::convertX 
?grid::convertY 

grid::convertX(grid::unit(72.27, "points"), "inches") 

(나는 ggplot2가로드 중 lattice 또는`때 첨부 AA 네임 스페이스를로드 것이 아니라, 때문에 대부분의 경우 grid의 형식주의 pkg::func를 사용합니다.)

나는 이전에 게시 : 당신은에서 사용할 수있는 제품을 얻을 수 있습니다 나중에 size이라는 말을 삭제 한 설명이 포인트였습니다. 나는 size=10으로 텍스트의 크기가 대략 10mm라는 것을보고 나서 그렇게했다.agstudy에서 언급 한 "마법"번호는 실제로 다음 중 1 % 이내입니다.

as.numeric(grid::convertX(grid::unit(1, "points"), "mm")) 
#[1] 0.3514598 
0.352777778/.Last.value 
#[1] 1.00375 
+0

매우 통찰력이 있습니다 – user1609452

+0

크기 단위가 mm 단위라고 생각했습니다. http://groups.google.com/group/ggplot2-dev/tree/browse_frm/thread/37ba1aaaf8e22b38/a2c142da58418570?hide_quotes=no&pli=1 왜 마법 번호 0.3514598이 아닙니다. – user1609452

+0

아마도 hadley의 장치에서 그 크기 비율입니다. 저는 6 살짜리 Mac에서 일하고 있습니다. –