2014-02-20 153 views
1

我知道有可能put two scatterplots onto one plot in ggplot2,但我也需要在相關點之間放置一個箭頭。ggplot中的兩個散點圖,兩個散點圖之間有箭頭

舉例來說,如果我有以下data.frame

SPEAKER <- c("A","A","B","B") 
VOWEL <- c("ej","ow","ej","ow") 
MB_F1_ONGLIDE <- c(423.88,533.297,465.796,532.118) 
MB_F2_ONGLIDE <- c(1847.428,962.485,1815.381,1058.883) 
MB_F1_OFFGLIDE <- c(404.827,480.176,423.381,522.727) 
MB_F2_OFFGLIDE <- c(1885.349,911.669,1887.392,971.168) 
data <- data.frame(SPEAKER,VOWEL,MB_F1_ONGLIDE,MB_F2_ONGLIDE,MB_F1_OFFGLIDE,MB_F2_OFFGLIDE) 

我知道我可以做兩個散點圖出現在同一個情節是這樣的:

plot <- ggplot(data,aes(x = MB_F2_ONGLIDE,y = MB_F1_ONGLIDE,color = SPEAKER,label = VOWEL)) + 
    geom_text(aes(x = MB_F2_ONGLIDE,y = MB_F1_ONGLIDE)) + 
    geom_text(aes(x = MB_F2_OFFGLIDE,y = MB_F1_OFFGLIDE)) + 
    scale_x_reverse() + 
    scale_y_reverse() 

主要生產:

enter image description here

但我想要的是一些東西一樣:

enter image description here

就是我想要的東西,從MB_F1_ONGLIDE價值爲MB_F1_OFFGLIDE價值的東西,得出一個箭頭從MB_F2_ONGLIDE值到MB_F2_OFFGLIDE值繪製一個箭頭。

這可能嗎?

回答

3

是的 - 您可以使用geom_segment(),您需要加載gridgridExtra來繪製箭頭。你可以用行的大小/顏色在geom_segment通話鼓搗一下?箭頭如何改變箭頭形狀/行爲

require(gridExtra) 

ggplot(data,aes(x = MB_F2_ONGLIDE,y = MB_F1_ONGLIDE,color = SPEAKER,label = VOWEL)) + 
    geom_text(aes(x = MB_F2_ONGLIDE,y = MB_F1_ONGLIDE)) + 
    geom_text(aes(x = MB_F2_OFFGLIDE,y = MB_F1_OFFGLIDE)) + 
    geom_segment(aes(x = MB_F2_ONGLIDE,y = MB_F1_ONGLIDE,xend = MB_F2_OFFGLIDE,yend = MB_F1_OFFGLIDE,color=SPEAKER),arrow=arrow()) + 
    scale_x_reverse() + 
    scale_y_reverse() 

enter image description here