Я пытаюсь создать несколько графиков с помощью ggplot2, и я бы хотел, чтобы каждый тип фактора всегда назначал один и тот же цвет.
Вот вам пример с игрушкой.
mydata <- data.frame(from=rep(c("b","c"), each=15),
to=rep(c("a","b","c"), each=10),
value=c(rep(1:5,5:1),rep(1:5,1:5)) )
Сначала я преобразую категории в факторы, чтобы всегда присваивать одно и то же значение, и потому что оно работало на других графиках, которые я делал.
Я хочу создать два графика плотности (или аналогичных) из значения, сгруппированного по категориям двумя способами, один с использованием категорий столбца «от», другой с категориями столбца «до», используя тот же легенда.
niv <- c("a", "b", "c")
colo <- c("black", "red", "blue")
mydata$from <- factor(mydata$from, levels=niv)
mydata$to <- factor(mydata$to, levels=niv)
А теперь я генерирую графики.
Сначала с группировкой по столбцу "из".
ggplot(mydata) + stat_density(geom="line",size=0.8,
position = "identity", aes(x=value, color=from)) +
scale_colour_manual(name="Type",labels = niv,
values=colo) + theme_bw()
![enter image description here](https://i.stack.imgur.com/nLZCR.png)
Как вы можете видеть, он не дает желаемого графика, потому что он показывает фактор "а", но его нет в столбце "из".
А теперь группировка по столбцу "до".
ggplot(mydata) + stat_density(geom="line",size=0.8,
position = "identity", aes(x=value, color=to)) +
scale_colour_manual(name="Type",labels = niv,
values=colo) + theme_bw()
![enter image description here](https://i.imgur.com/D1hz4kx.png)
Работает как положено.
Теперь я пытаюсь снова создать первый график без параметра метки.
ggplot(mydata) + stat_density(geom="line",size=0.8,
position = "identity", aes(x=value, color=from)) +
scale_colour_manual(name="Type", values=colo) +
theme_bw()
![enter image description here](https://i.imgur.com/JIwWIyO.png)
Теперь он правильно маркирует категории, но цвет не соответствует второму графику.
Как я могу это сделать?
Настоящая проблема имеет больше категорий и много значений.