如何在 R 中仅制作四行中的一行虚线?

How do I make only one line, out of four lines, dashed in R?

我遇到了一个问题。我应该创建一个由四条线组成的线图,其中一条应该是虚线,而其他线应该保持连续。我设法做到了:

]

然而,这种方法的问题是图例并没有像情节中那样出现。这是我的命令行:

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/another 解决方案来解决这个问题?我更喜欢干净利落的,而不是花里胡哨的。

一种解决方案是在指南选项中添加 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)

注意指南选项中添加的颜色。希望对您有所帮助。