Blogul lui Zhenguo Zhang https://fortune9.netlify.app/2026/05/30/r-position-legend-inside-plot/ –
Implicit, ggplot2 plasează legenda în afara zonei parcelei (de obicei în dreapta). Cu toate acestea, uneori poate doriți să mutați legenda în interiorul complotului pentru a economisi spațiu sau pentru a îmbunătăți aspectul. Această postare explorează cum să realizați acest lucru folosind theme() parametrii.
Exemplul 1: Utilizarea de bază a legend.position
Cel mai simplu mod de a muta o legendă în interiorul plotului este furnizarea unui vector numeric de lungime doi la legend.position argument în theme(). Aceste coordonate reprezintă poziția relativă în panoul de diagramă, variind de la 0 la 1. Verificați secțiunea „Controale de poziționare cheie” de la sfârșit pentru o explicație detaliată a sistemului de coordonate.
library(ggplot2) ggplot(mtcars, aes(wt, mpg, color = factor(cyl))) + geom_point(size = 3) + theme_bw() + theme(legend.position = c(0.8, 0.8))

Exemplul 2: Ajustare fină cu justificare și fundal
Când plasați o legendă în interior, trebuie adesea să ajustați care parte a casetei de legendă se aliniază cu coordonatele dvs. și să gestionați fundalul dacă ascunde datele.
legend.justification: Controlează punctul de ancorare al casetei de legendă. De exemplu,c("right", "top")înseamnă că colțul din dreapta sus al casetei cu legendă va fi plasat la coordonatele specificate.legend.background: Foloseșteelement_blank()pentru a face fundalul transparent.
ggplot(mtcars, aes(wt, mpg, color = factor(cyl))) +
geom_point(size = 3) +
theme_bw() +
theme(
legend.position = c(1, 1),
legend.justification = c("right", "top"),
legend.background = element_blank()
)


Exemplul 3: Poziționarea în diagrame cu fațete
Mutarea legendei în interiorul unui diagramă cu fațete funcționează în mod similar: întreaga figură este considerată ca o diagramă pentru sistemul de coordonate. Puteți utiliza coordonatele pentru a-l plasa într-unul dintre spațiile goale sau peste un anumit panou. În exemplul următor, legenda este plasată în centrul de jos al complotului și este adăugat un fundal pentru a îmbunătăți lizibilitatea:
ggplot(mtcars, aes(wt, mpg, color = factor(cyl))) +
geom_point(size = 3) +
facet_wrap(~am) +
theme_bw() +
theme(
legend.position = c(0.5, 0.2),
legend.background = element_rect(fill = "white", color = "grey80")
)


Exemplul 4: Trucul „Spațiu gol” pentru parcele cu fațete
Dacă aveți un panou care nu are date, atunci este locul perfect pentru a plasa legenda. Pentru a arăta acest lucru, variabila fațetă carb are doar 3 valori și vom face o grilă de fațete 2×2. Vom elimina, de asemenea, fundalul și chenarul legendei. Următorul exemplu arată acest lucru:
# Use 3 categories to leave the 4th spot in a 2x2 grid empty
mtcars_subset <- mtcars(mtcars$carb %in% c(1, 2, 4), )
ggplot(mtcars_subset, aes(wt, mpg, color = factor(cyl))) +
geom_point(size = 3) +
facet_wrap(~carb, nrow = 2, ncol = 2) +
theme_bw() +
theme(
# Coordinates c(0.75, 0.25) target the center of the empty bottom-right area
legend.position = c(0.75, 0.25),
legend.background = element_blank(),
legend.justification = "center"
)


Comenzi de poziționare cheie
Pentru a stăpâni poziționarea legendei, țineți cont de aceste trei comenzi:
- Sistemul de coordonate: Coordonatele
c(X, Y)reprezintă o scară relativă de la 0 la 1 pe panoul grafic.c(0, 0): Colțul din stânga josc(1, 1): Colțul din dreapta susc(0.5, 0.5): Centrul parcelei
- Punct de ancorare (
legend.justification): Folosiți-l pentru a controla ce parte a casetei de legendă se aliniază cu coordonatele dvs. De exemplu,c("right", "top")asigură că colțul din dreapta sus al casetei cu legendă se află exact la coordonatele țintă. - Îndepărtarea fundalului: Dacă legenda dvs. blochează punctele de date, goliți fundalul casetei de legendă folosind
legend.background = element_blank(). Alternativ, utilizațielement_rect()pentru a-i oferi un fundal semi-transparent sau stilizat.
Programare fericită!
– https://fortune9.netlify.app/2026/05/30/r-position-legend-inside-plot/ –





