Эта причуда вызвана неявной группировкой точек данных в ggplot на основе colour
, linetype
et c. Установка группы вручную на что-то не решит эту проблему, потому что существует правило 1-строка-1-внешний вид.
Вот два варианта.
Вариант 1: просто скопируйте datapoint и измените на месте:
library(tidyverse)
df = tibble(year = -5:5, value=runif(11))
df$lty = df$year <= 0
df <- rbind(df, df[df$year == 0,])
df$lty[nrow(df)] <- FALSE
ggplot(data=df, aes(x=year, y=value, lty=lty)) + geom_line()
Вариант 2: вместо этого параметризуйте данные как сегменты
df = tibble(year = -5:5, value=runif(11))
df = cbind(head(df, -1),
tail(df, -1)) %>%
setNames(c("year0", "value0", "year1", "value1"))
df$lty <- df$year0 <= 0 & df$year1 <= 0
ggplot(df, aes(x = year0, y = value0, xend = year1, yend = value1, linetype = lty)) +
geom_segment()
Создано 27.05.2020 с помощью пакета . (v0.3.0)