R ggplot - Несколько строк с одинаковой переменной цвета показывают легенды только первой строки

У меня есть часть кода, которая работает для меня:

arr.sort((a, b) => a.name > b.name)

UPDATE: не работает всегда, поэтому это неверно: (

0
задан LAP 16 January 2019 в 06:42
поделиться

2 ответа

Вы можете получить 4 цвета, пересекая переменную f с переменной - если значение берется из столбца y1 или y2:

dt1 %>%
  gather(key, value, y1:y2) %>%
  unite('f', f:key, sep = '_') %>%
  ggplot(aes(
    x = date,
    y = value,
    color = f
  )) +
  geom_line()

enter image description here [114 ]

0
ответ дан Paweł Chabros 16 January 2019 в 06:42
поделиться

Вы получаете ожидаемое поведение - сначала нарисуйте линии для значений y1, где цвет зависит от коэффициента (0,1) для каждой строки, а затем нарисуйте линии для значений y2, где цвет зависит от коэффициента (0,1) для каждого строки.

Сведение случая к первым двум записям, например: каково требование назначать цвета для y1 и y2, у которых значение f равно нулю? Хотите ли вы назначить цвет 0 для одного и цвет 1 для другого (в этом случае вам не нужна эта информация в каждом ряду) или вам нужна какая-то линия, которая будет чередовать цвет (поэтому здесь обе линии будут иметь цвет 0 для первых двух строк, тогда, если строка имеет коэффициент 1, обе строки будут иметь цвет 1)?

если вы хотите использовать один цвет на строку, используйте жесткий код в параметре цвета вместо использования фактора строки

dt1 <- data.frame(x = c("01/01/19","01/02/19","01/03/19"), f = as.factor(c(1,1,0)), y1 = c(6,8,7), y2 = c(10,12,14))
dt1$x <- as.Date(dt1$x, "%m/%d/%y")

ggplot(data = dt1) +
  geom_line(aes(x = x, y = y2, color = "red"))  + 
               geom_line(aes(x = x, y = y1, color = "blue"))

, если вы хотите чередовать цвета на y1 и y2, это то, на что это может быть похоже, используя точки (линии кажутся более хитрыми)

dt1 <- data.frame(x = c("01/01/19","01/02/19","01/03/19"), f = as.factor(c(1,1,0)), y1 = c(6,8,7), y2 = c(10,12,14))
dt1$x <- as.Date(dt1$x, "%m/%d/%y")

ggplot(data = dt1) +
  geom_point(aes(x = x, y = y2, color = factor(f)))  + 
  geom_point(aes(x = x, y = y1, color = factor(f))) 
0
ответ дан Raphael Moline 16 January 2019 в 06:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: