/ / Indeks dolny w wielu legendach w ggplot2 - r, ggplot2, legenda, indeks dolny

Indeks dolny w wielu legendach w ggplot2 - r, ggplot2, legenda, indeks dolny

Aby moja postać była odpowiednia do czarno-białego drukowania, zmapowałam jedną zmienną razem za pomocą "kształtu", "lty", "koloru".

ggplot(df, aes(x=time, y=mean,
shape=quality,
lty=quality,
color=quality))

Mam taką postać, wprowadź opis obrazu tutaj Chciałbym, aby część legend była subskrybowana, z kodami:

labels=c(expression(Pol[(Art)]), expression(Pol["(Aca-)"]), expression(Pol["(Aca-)"]))

Niestety, kiedy umieszczam "etykietę" w kolorze lub kształcie, sprawia ona, że ​​legenda jest dość złożona,

wprowadź opis obrazu tutaj

Czy można mapować "kształt", "kolor", "lty" na jedną zmienną i ustawić indeks dolny, ale zachować je w jednym zestawie legendy?

Odpowiedzi:

1 dla odpowiedzi № 1

Aby zmienić etykiety o skali kategorycznej, używasz scale_*_discrete(labels = ...). Tutaj po prostu musisz to zrobić color, shape, i linetype.

Powinieneś unikać używania lty = ogólnie; ten synonim jest dopuszczalny dla zgodności z bazą R, ale nie jest powszechnie obsługiwany w całym tekście ggplot2.

Zmieniłem twoje etykiety, aby być bliżej tego, co jamyślę, że miałeś na myśli (trzeci wpis to teraz "Aca +" zamiast powtórzenia "Aca-") i lepiej je wyrównać (dodając niewidoczny "+" do pierwszego, aby utworzyć odpowiedni odstęp).

lab1 <- c(expression(Pol[(Art)*phantom("+")]),
expression(Pol["(Aca-)"]),
expression(Pol["(Aca+)"]))

library(ggplot2)

ggplot(mtcars,
aes(wt, mpg,
color = factor(cyl),
shape = factor(cyl),
linetype = factor(cyl))) +
geom_point() +
stat_smooth(se = F) +
scale_color_discrete(labels = lab1) +
scale_shape_discrete(labels = lab1) +
scale_linetype_discrete(labels = lab1)

wprowadź opis obrazu tutaj

Jeśli okaże się, że musisz powtarzać dokładne kopie takiej funkcji, istnieją dwa sposoby obejścia tego problemu:

  1. Ponownie zrewiduj dane - LUB -

  2. Posługiwać się purrr::invoke_map iterować po funkcjach


library(purrr)

ggplot(mtcars,
aes(wt, mpg,
color = factor(cyl),
shape = factor(cyl),
linetype = factor(cyl))) +
geom_point() +
stat_smooth(se = F) +
invoke_map(list(scale_color_discrete,
scale_linetype_discrete,
scale_shape_discrete),
labels = lab1)