2014-09-23 51 views
2

我試圖將文字註釋放置在既有小平面又有離散軸的圖上。我可以使用aes()將註釋的位置與點數綁定,但我想稍微加點一點以保持點的可讀性。這是好的,如果微移是一個數值等級:沿離散比例調整幾何位置

data <- data.frame(
    category = c("blue", "yellow", "red", "green"), 
    rating = 1:4) 

gp <- ggplot(data) + geom_point(aes(x = category, y = rating)) + 
    geom_text(aes(label = "I have a label!", x = category, y = rating + 0.5)) 

但是,如果我嘗試做一個非數字的規模(在這種情況下,字符)失敗:

gp <- ggplot(data) + geom_point(aes(x = category, y = rating)) + 
    geom_text(aes(label = "I have a label!", x = category + 0.5, y = rating)) 
gp 

Error in unit(x, default.units) : 'x' and 'units' must have length > 0 
In addition: Warning messages: 
1: In Ops.factor(category, 0.5) : + not meaningful for factors 
2: Removed 4 rows containing missing values (geom_text). 

我可以使用hjustvjust稍微移動它們,但由於它們旨在對齊文本而不是定位文本,因此即使在最大程度上它們也不會將註釋移動得足夠遠。有沒有一種方法可以確定數字比例將離散變量映射到,還是另一種手動調整geom_text位置的方法?

+0

hjust可用於位置。這適用於我(這是你在找什麼?):ggplot(data)+ geom_point(aes(x = category,y = rating))+ geom_text(aes(label =「我有一個標籤!」,x =類別,y =等級),hjust = - 。1) – ddiez 2014-09-23 03:51:46

+0

@ddiez你爲什麼不發表這個答案? – jlhoward 2014-09-23 03:55:25

+0

謝謝@jlhoward,完成。 – ddiez 2014-09-23 03:59:35

回答

3

可以使用hjust(或vjust)來定位文本:

ggplot(data) + geom_point(aes(x = category, y = rating)) + 
    geom_text(aes(label = "I have a label!", x = category, y = rating), hjust=-.1)