2017-04-20 72 views
1

好吧,我有一個包含2個變量X和Y以及一個ID變量的數據集。我創建使用此代碼一個完整的情節:在標籤和點之間使用ggrepel繪製單個繪圖點/添加線條

ggplot(data = X_Y) + 
    geom_point(mapping = aes(x = X, y = Y))+ 
    geom_text_repel(mapping = aes(x = X, y = Y, label = ID))+ 
    xlim(0,100)+ 
    ylim(0,100) 

這會產生這樣一個情節: enter image description here

我現在希望建立若干獨立地塊只有一次顯示一個數據點與他們的標籤。

現在我可以只使用不排斥GEOM_LABEL和微調標籤得到這個: enter image description here

雖然這個情節是確定的,我想知道是否有任何的方式來保持怎麼樣的標籤連接點的線路ggrepel呢......

編輯

從第一個建議,當我嘗試使用與選擇,我得到以下情節只有一個的情況下擊退:

ggplot(data = X_Y) + 
    geom_point(aes(x = X[4], y = Y[4]))+ 
    geom_label_repel(aes(x = X[4], y = Y[4]), 
        label = "You are here", 
        min.segment.length = unit(0, 'lines'), 
        nudge_y = 6)+ 
    labs(x = "X",y = "Y",title = "mytitle")+ 
    scale_x_continuous(limits = c(0, 100)) + 
    scale_y_continuous(limits = c(0, 100)) 

enter image description here

議決

想通了!我需要在ggplot()中指定我的數據只是X和Y變量,並限制到感興趣的行。

像這樣:

ggplot(data = X_Y[4,c(3,4)) + 
    geom_point(aes(x = X, y = Y))+ 
    geom_label_repel(aes(x = X, y = Y), 
        label = "You are here", 
        min.segment.length = unit(0, 'lines'), 
        nudge_y = 6)+ 
    labs(x = "X",y = "Y",title = "mytitle")+ 
    scale_x_continuous(limits = c(0, 100)) + 
    scale_y_continuous(limits = c(0, 100)) 

回答

0

當然,你可以仍然使用geom_label_repel,即使只有一個點。爲了確保繪製段,請調整min.segment.length參數。這ARG設置的最小距離從點到標籤繪製段,將其設置爲unit(0, 'lines')確保每段得出:


library(ggplot2) 
library(ggrepel) 

ggplot(data.frame(x = 2, y = 3)) + 
    geom_point(aes(x, y)) + 
    geom_label_repel(aes(x, y), 
        label = 'You are here', 
        min.segment.length = unit(0, 'lines'), 
        nudge_y = .2) + 
    scale_x_continuous(limits = c(0, 3)) + 
    scale_y_continuous(limits = c(0, 4)) 

+0

感謝repsonse! 我試過這樣做,但我得到一個奇怪的圖形,它看起來像映射標籤爲數據集的總N,但在單點....我編輯了我的問題上面展示.... – Gerard

+0

弄清楚了!我需要在ggplot()中指定我的數據只是X和Y變量,並限制到感興趣的行。然後流動:) – Gerard

相關問題