Dies ist ein Hack , aber ...
Lassen Sie uns einige leere Faktorstufen in cyl
zwischen den realen Ebenen hinzufügen. Dann stellen wir sicher, dass sie in den Plot eingeschlossen sind (drop=FALSE
), um den Abstand in der Legende zu erhalten, setzen aber ihre Farben und Beschriftungen auf leere Werte, sodass Sie sie nicht in der Legende sehen können. Ich fand, dass ich auch override.aes=list(color="white")
einschließen musste, um zu vermeiden, dass die leeren Legenden-Schlüsselkästen immer noch so leicht in der Legende sichtbar sind.
mtcars$cyl = factor(mtcars$cyl, levels=c(4, 11:15, 6, 16:20, 8))
cols = hcl(seq(15,375,length.out=4)[1:3], 100, 65)
ggplot(mtcars, aes(cyl, fill=cyl)) +
geom_bar() +
coord_flip() +
scale_fill_manual(values=c(cols[1], rep("white",5), cols[2], rep("white",5), cols[3]),
labels=c(4, rep("",5), 6, rep("",5), 8), drop=FALSE) +
theme(legend.position = 'top') +
guides(fill = guide_legend(title=NULL, nrow=1, override.aes=list(color="white")))
Es scheint, als ob Sie in der Lage sein sollten, es mit etwas wie 'theme (legende.text = element_text (margin = margin (r = 2, unit = 'in')))' ', aber das scheint nicht zu tun mach alles. Ein hacky (aber effektive) Weg, es zu tun ist, einfach Räume zu den Elementen hinzuzufügen: 'fill = factor (paste (cyl, ''))' – alistaire
@alistaire, das ist viel einfacher als mein Hack. Sie sollten es als Antwort hinzufügen. – eipi10
Mögliches Duplikat von [Gibt es eine Möglichkeit, den Abstand zwischen Legendenelementen in ggplot2 zu ändern?] (Http://stackoverflow.com/questions/11366964/is-there-a-way-to-change-the-spacing-between) -legend-items-in-ggplot2) – user20650