/ / Контролювати тип лінії, колір та етикетку в легенді ggplot - r, ggplot2

Контроль за типом лінії, кольором та міткою в легенді ggplot - r, ggplot2

Я маю проблеми з налаштуванням спеціальних міток легендна ділянках, де раніше я вказав власні типи ліній і кольори. Подібне питання стосовно stackoverflow, що стосується користувацьких легенд для Типи ліній і лінійні кольори. Однак, коли ви хочете вказати легендові мітки на вершині двох вищезазначених атрибутів, ggplot2, здається, починає руйнуватися.

Ось мій мінімально відтворений приклад:

library(ggplot2)

df <- data.frame(x = rep(1:2, 2), y = c(1, 3, 2, 2),
treatment = c(rep("one", 2), rep("two", "2")))

ggplot(df, aes(x = x, y = y, colour = treatment, linetype = treatment)) +
geom_line() +
scale_linetype_manual(values = c(1, 3),
labels = c("Treatment one", "Treatment two")) +
scale_color_manual(values = c("black", "red"))

Наведений вище код дає такий графік

Налаштування етикеток у масштабі або в масштабі, або у масштабі_колір, призводить до створення двох легенд.

Налаштування міток в будь-якому scale_linetype_manual() або scale_color_manual() призводить до створення двох окремих легенд. Той, котрий має правильну риску ліній, завжди буде безбарвним. З іншого боку, коректний колір не буде правильно відображати типи ліній (лише суцільні лінії).

Чи є спосіб контролювати колір, тип лінії таЛегенда позначає всі одразу в ggplot2? Або це обмеження пакунку, де я повинен просто правильно вказати мітки в кадрі даних з getgo?

Відповіді:

2 для відповіді № 1

Зробіть мітку однаковою для обох scale_linetype_manual() і scale_color_manual().

library(ggplot2)

df <- data.frame(x = rep(1:2, 2), y = c(1, 3, 2, 2),
treatment = c(rep("one", 2), rep("two", "2")))

ggplot(df, aes(x = x, y = y, colour = treatment, linetype = treatment)) +
geom_line() +
scale_linetype_manual(values = c(1, 3),
labels = c("Treatment one", "Treatment two")) +
scale_color_manual(values = c("black", "red"),
labels = c("Treatment one", "Treatment two"))

введіть опис зображення тут