2016-02-29 54 views
1

我在這裏面臨一個問題。我應該創建一條由四條線組成的線條,其中一條應該是虛線而另一條線條是連續的。這是我能夠做到:如何在R中破四條線,只有一條線?

plot with four lines]

然而,用這種方法的問題是傳說中不出現在劇情。這裏是我的命令行:

library(dplyr) 
library(ggplot2) 

DF$Distractor <- factor(DF$Distractor, levels = c("NF", "LSF", "HSF", "MASK")) ## Rearrange modalities 
DF %>% 
    mutate(dummy = ifelse(Distractor != "MASK", 0, 1)) %>% ## MASK dashed ## 
    ggplot(aes(x = Lag, y = ., colour = Distractor, group = Distractor, linetype = dummy %>% as.factor())) + 
    guides(linetype = FALSE) + ## Drop the dummy legend ## 
    geom_line(size = .75) + 
    scale_colour_grey() + 
    theme_classic() + 
    labs(x = "Lag", y = "Probability of T2 report") + 
    ylim(0, 1) 

下面是數據:

Distractor Lag   . 
1   NF Lag1 0.4556818 
2   NF Lag3 0.2113636 
3   NF Lag8 0.4954545 
4   LSF Lag1 0.4238636 
5   LSF Lag3 0.2397727 
6   LSF Lag8 0.5659091 
7   HSF Lag1 0.4579545 
8   HSF Lag3 0.3125000 
9   HSF Lag8 0.4954545 
10  MASK Lag1 0.4170455 
11  MASK Lag3 0.2022727 
12  MASK Lag8 0.4443182 

有沒有爲了得到這個直A /另一種解決方案?我寧願一個乾淨整潔的人,而不是棘手的技巧。

+3

您需要提供更多數據才能使其具有可重複性;另請參閱'?scale_linetype_manual' – beetroot

+0

它應該可以通過我剛剛添加的鏈接。 –

+0

您應該在問題本身中包含示例數據。請參閱[如何創建可重現的示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。 – MrFlick

回答

0

一個解決方案是在指南選項中添加override.aes。以下代碼應該這樣做:

DF %>% 
    mutate(dummy = ifelse(Distractor != "MASK", 0, 1)) %>% ## MASK dashed ## 
    ggplot(aes(x = Lag, y = ., colour = Distractor, group = Distractor, linetype = dummy %>% as.factor())) + 
    guides(linetype = FALSE,color=guide_legend(override.aes=list(linetype=c(1,1,1,2)))) + ## Drop the dummy legend ## 
    geom_line(size = .75) + 
    scale_colour_grey() + 
    theme_classic() + 
    labs(x = "Lag", y = "Probability of T2 report") + 
    ylim(0, 1) 

注意在指南選項中添加了顏色。我希望這有幫助。

+0

@A戈爾:它完美的作品!感謝您的幫助。 :) –