Я пытаюсь сделать график с вручную установленными цветами и вручную заданными формами как для точек, так и для линий. Фрейм данных, с которым я работаю, имеет следующий формат:
"n" "times" "algorithms" "shapes" "linetypes" "colours"
1 0.000271833 "algo1" "x" "solid" "blue"
11 0.000612195 "algo1" "x" "solid" "blue"
1 0.000267802 "algo2" "x" "solid" "red"
11 0.000644297 "algo2" "x" "solid" "red"
1 0.000280468 "algo3" "x" "solid" "green"
11 0.000816817 "algo3" "x" "solid" "green"
1 0.000452015 "algo4" "x" "solid" "black"
11 0.00271677 "algo4" "x" "solid" "black"
1 0.000271255 "algo5" "o" "dashed" "blue"
11 0.000622194 "algo5" "o" "dashed" "blue"
1 0.000271107 "algo6" "o" "dashed" "red"
11 0.000701686 "algo6" "o" "dashed" "red"
1 0.000267631 "algo7" "o" "dashed" "green"
11 0.000723341 "algo7" "o" "dashed" "green"
1 0.000451016 "algo8" "o" "dashed" "black"
11 0.00124079 "algo8" "o" "dashed" "black"
Этот кадр данных содержит время выполнения для 8 различных алгоритмов. Я хотел бы добиться следующего: я хотел бы нанести точки крестами для алгоритмов с alg1
по alg4
и с точками (если возможно, заполненными) для алгоритмов с alg5
по alg8
. Аналогичным образом я хочу, чтобы линии соединяли точки, чтобы нарисованные линии показывали рост времени выполнения каждого алгоритма, и я хочу, чтобы некоторые линии были сплошными, а другие — пунктирными. Я также хочу использовать определенные цвета для каждого алгоритма, как указано в столбце «цвета».
Теперь мне удалось добиться некоторого прогресса:
g <- ggplot(df, aes(x=n, y=times, group=algorithms, linetype=linetypes, pch=shapes, colour=colours)) +
geom_line() +
geom_point() +
theme(legend.position="bottom") +
xlab("n") +
ylab(paste0("Execution time (ms)")) +
ggtitle("asdf")
Но это дает мне очень неприятную легенду:
Я хотел бы иметь легенду с именами алгоритмов рядом с изображением их соответствующих типов линий и точек и, очевидно, цвета.
Я просмотрел этот сайт и другие, но безрезультатно. Это действительно было сложно, так как большинство людей не выходят за рамки ручной настройки цветов, форм точек и типов линий. Мне нужно только знать, как сделать этот дополнительный шаг. Я уверен, что это довольно легко сделать, но я в полной растерянности.
Спасибо вам всем.