2014-12-02 210 views
2

我試圖建立一個陰謀的多元迴歸模型的數據是這樣的:在geom_smooth設置不同的線型,GGPLOT2

subject iq  condition RT 
1  98  A   312 
1  98  B   354 
1  98  C   432 
2  102  A   134 
2  102  B   542 
2  102  C   621 
...  ...  ...  ... 

等。

我想在x軸上繪製iq,在y軸上繪製RT,並針對不同的條件使用具有不同線型的不同線條(虛線,虛線)。

到目前爲止,我的代碼看起來是這樣的:

ggplot(DFplotlong, aes(iq, RT, colour = condition)) 
+ geom_smooth(method = lm, fullrange = TRUE, alpha = .15) 
+ theme_bw() 
+ labs(x = "iq", y = "reaction times") 
+ scale_colour_manual(values=c("#999999","#000000"), name="condition", breaks=c("A", "B", "C"), labels = c("easy", "medium", "hard")) 

現在,除了我覺得我有點需要設置線型,但我不知道是否使用scale_linetype_manual,scale_linetype_discrete,或什麼的。另外,我不知道如何使用正確的功能。

任何人都可以幫我解決這個問題嗎?那樣就好了!

PS:我曾嘗試過各種東西,但爲R給我,其中的顏色被指定爲目的的陰謀,但線型不改,但留下的固體,或它給了我這樣的錯誤信息

Fehler in grid.Call.graphics(L_polygon, x$x, x$y, index) : 
ungültiger Linientyp: muss Länge 2, 4, 6, oder 8 haben 

我在英語猜應該是這樣的

Error in grid.Call.graphics(L_polygon, x$x, x$y, index) : 
invalid linetype: must be length 2, 4, 6, or 8 

回答

3

這一切似乎你缺少的是裏面的aes() ARG的linetype = condition ument。另外,你的scale_colour_manual調用似乎是錯誤的:你只給出兩個值而不是三個。要正確計算比例尺,您可以使用scale_linetype_discrete()進行自動縮放,或使用scale_linetype_manual()手動設置線型。這裏的例子:

# 
DFplotlong <- read.table(text='subject iq  condition RT 
1  98  A   312 
1  98  B   354 
1  98  C   432 
2  102  A   134 
2  102  B   542 
2  102  C   621', header=TRUE) 
# 
ggplot(DFplotlong, aes(iq, RT, colour = condition, linetype = condition)) + 
    geom_point() + 
    geom_smooth(method = lm, fullrange = TRUE, alpha = .15) + 
    theme_bw() + 
    labs(x = "iq", y = "reaction times") + 
    scale_colour_manual(values=c("#999999","#000000", "#900009"), 
        name="condition", 
        breaks=c("A", "B", "C"), 
        labels = c("easy", "medium", "hard")) + 
    scale_linetype_discrete(name="condition", 
          breaks=c("A", "B", "C"), 
          labels = c("easy", "medium", "hard")) 

enter image description here

+1

謝謝!這是我需要的。爲了設置特定的線型,我還將'values = c(「A」= 2,「B」= 5,「C」= 1)'添加到'scale_linetype_manual()'中。 – bunsenbaer 2014-12-02 16:15:48

0
DFplotlong <- read.table(header = TRUE, text = " 
    subject iq  condition RT 
    1  98  1   312 
    1  98  2   354 
    1  98  3   432 
    2  102  1   134 
    2  102  2   542 
    2  102  3   621 
    3  105  1   137 
    3  105  2   545 
    3  105  3   624 
    ") 

DFplotlong$condition <- factor(DFplotlong$condition) 

ggplot(data=DFplotlong, aes(iq, RT, colour=condition, linetype=condition)) + 
    geom_smooth(method = lm, fullrange = TRUE) + 
    theme_bw() + 
    labs(x = "iq", y = "reaction times")