2013-08-06 3 views
11

나는 vjust을 사용하여 문제를 해결하고 수락 할 거리를 시도하고 오류를 자세히 설명합니다. 하지만 때로는 시간이 많이 걸리며 글꼴 크기와 축척을 변경하면 이 변경됩니다.ggplot2에서 geom_vline에 geom_text 정렬

예제의 텍스트를 자동 정렬하는 더 좋은 방법이 있습니까?

library(ggplot2) 

ggplot(data=mtcars, aes(x=hp, y=mpg))+ 
geom_point()+ 
theme_bw() + 
    geom_vline(xintercept=200, colour="grey") + 
    geom_text(aes(x=200, label="the strong cars", y=20), colour="blue", angle=90, vjust = 1.2, text=element_text(size=11))+ 
    geom_text(aes(x=200, label="the weak cars", y=20), colour="red", angle=90, vjust = -1, text=element_text(size=11)) 

ggsave(filename="geomline.png", width=5.5, height=2*3, dpi=300) 

enter image description here

+0

어떻게 정렬하고 싶습니까? vjust = 0 및 vjust = 1은 그들이하는 일을하는 것처럼 보입니다.이 범위를 벗어나는 값은 항상 더 excentric합니다. – baptiste

+0

나는 컴퓨터가 글꼴 크기를 보였고 올바른 거리에 텍스트 상자를 넣기를 원합니다. 따라서 사용자는 vjust 값을 가지고 놀 필요가 없습니다. –

+1

음모가 항상 간단한 것이라 할지라도 자동으로 포지셔닝 라벨을 붙이기는 어렵다고 생각합니다. ['directlabels'] (http://cran.r-project.org/web/packages/directlabels/index.html) 패키지를 보셨습니까? – SlowLearner

답변

15

한 줄 레이블의 경우에 대한 또 다른 해결책은 전/후 줄 바꿈을 추가하고 = 0.5을 기본 vjust을 유지하는 것입니다.

ggplot(data=mtcars, aes(x=hp, y=mpg)) + 
    geom_point() + 
    theme_bw() + 
    geom_vline(xintercept=200, colour="grey") + 
    geom_text(aes(x=200, label="\nthe strong cars", y=20), colour="blue", angle=90, text=element_text(size=11)) + 
    geom_text(aes(x=200, label="the weak cars\n", y=20), colour="red", angle=90, text=element_text(size=11)) 
+0

쉽고 효율적입니다. 나는 그것을 좋아한다! – fdetsch

+1

또한 여러 복사본을 렌더링하지 않으려면'geom_text' 대신'annotate'를 사용해야합니다. https://stackoverflow.com/questions/10952832/ggplot2-is-there-a-fix-for-jagged-poor- 품질의 텍스트로 생성 된 텍스트 텍스트 – Valentas

관련 문제