Czy istnieje sposób na zmianę odstępów między elementami legendy w ggplot2? Obecnie mam
legend.position ="top"
która automatycznie tworzy poziomą legendę. Jednak odstępy między elementami są bardzo małe i zastanawiam się, jak rozmieścić je dalej od siebie.
opts
jest amortyzowane.Odpowiedzi:
ggplot2 v3.0.0
wydany w lipcu 2018 posiada opcje pracy zmodyfikowaćlegend.spacing.x
,legend.spacing.y
ilegend.text
.Przykład: Zwiększ poziome odstępy między klawiszami legendy
Uwaga: jeśli chcesz tylko rozszerzyć odstępy z prawej strony tekstu legendy, użyj
stringr::str_pad()
Przykład: Przenieś etykiety klucza legendy na dół i zwiększ odstępy w pionie
Przykład: dla
scale_fill_xxx
&guide_colorbar
W przypadku legend pionowych ustawienie
legend.key.size
zwiększa tylko rozmiar kluczy legendy, a nie odstępy między nimi w pionieAby zwiększyć odległość między klawiszami legendy,
legend-draw.r
konieczna jest modyfikacja funkcji. Zobacz ten numer, aby uzyskać więcej informacjiźródło
Myślę, że najlepszą opcją jest użycie
guide_legend
wguides
:Zwróć uwagę na użycie
default.unit
, nie ma potrzeby ładowaniagrid
pakietu.źródło
Prosta poprawka, której używam, aby dodać spację w legendach poziomych, po prostu dodaj spacje w etykietach (patrz wyciąg poniżej):
źródło
scale_fill_manual(values=values, labels=setNames(paste(labels, " "), entries))
.Teraz to
opts
jest przestarzałe wggplot2
pakiecie,theme
zamiast tego należy użyć funkcji :źródło
Aby dodać odstępy między wpisami w legendzie, dostosuj marginesy elementu motywu
legend.text
.Aby dodać 30 punktów miejsca po prawej stronie każdej etykiety legendy (może być przydatne w przypadku legendy poziomej):
Aby dodać 30 punktów miejsca po lewej stronie każdej etykiety legendy (może być przydatne w przypadku legendy pionowej):
za
ggplot2
obiektp
. Słowa kluczowe tolegend.text
imargin
.[Uwaga dotycząca edycji: kiedy ta odpowiedź została opublikowana po raz pierwszy, wystąpił błąd. Błąd został już naprawiony]
źródło
Wygląda na to, że najlepszym podejściem (w 2018 roku) jest użycie
legend.key.size
podtheme
obiektem. (np. patrz tutaj ).Jest to naprawdę łatwe, jeśli używasz
theme_bw()
:Jednak w przeciwnym razie nie działa to tak dobrze (np. Jeśli potrzebujesz szarego tła na swoim symbolu legendy):
Zwróć uwagę, że białe kwadraty zaczynają blokować tytuł legendy (i ostatecznie sam wykres, jeśli zwiększaliśmy wartość).
Nie do końca znalazłem obejście tego problemu ... Daj mi znać w komentarzach, jeśli masz pomysł, a zaktualizuję odpowiednio!
$layers
...źródło
legend.key
przejrzystym:theme(legend.key = element_rect(size = 30,color=alpha("transparent",0)))
Z pracy Koshke na ggplot2 i jego blogu (blog Koshke )
Wpisz
theme_get()
w konsoli, aby zobaczyć inne edytowalne atrybuty legendy.źródło
Użyj dowolnego z nich
źródło