(R) Cum să poziționați legenda în interiorul unui complot în ggplot2

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

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ște element_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:

  1. 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 jos
    • c(1, 1): Colțul din dreapta sus
    • c(0.5, 0.5): Centrul parcelei
  2. 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ă.
  3. Îndepărtarea fundalului: Dacă legenda dvs. blochează punctele de date, goliți fundalul casetei de legendă folosind legend.background = element_blank(). Alternativ, utilizați element_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/ –

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.