У меня есть часть кода, которая работает для меня:
arr.sort((a, b) => a.name > b.name)
UPDATE: не работает всегда, поэтому это неверно: (
Вы можете получить 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()
Вы получаете ожидаемое поведение - сначала нарисуйте линии для значений 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)))