Ich möchte horizontale Violinplots zeichnen (weil meine Labels lang sind). Mein Design Constraints sind:horizontal ggplot2 :: geom_violin ohne coord_flip
- mehrere Facetten (
f1
), mehr Kategorien pro Facette (f2
) (so will ichaes(x=f2)
undfacet_wrap(~f1)
- verschiedene Skalen pro Facette verwenden (so mag ich
scales="free"
) - 4 verschiedene Facetten, die ich über
facet_wrap()
(Ausschluss einige Facettierung Tricks)
Leider scales="free"
undanordnen möchten 10 sind derzeit (und auf absehbare Zeit) inkompatibel.
Die Antworten auf diese related question vorschlagen (1) hacken eine neue horizontale geom; (2) Austausch von x
und y
(die, wie dort erwähnt, nur mit symmetrischen Geometrien wie Streudiagrammen funktioniert); (3) aufgeben und mit dem herkömmlichen Layout gehen.
Ideen?
set.seed(101)
library("plyr")
dd <- expand.grid(f1=factor(1:2),
f2=paste("inconveniently long label",1:2))
dd2 <- ddply(dd,c("f1","f2"),
function(x)
data.frame(y=rnorm(100,
mean=10*(as.numeric(x$f2)),
sd=10^(as.numeric(x$f1)))))
library("ggplot2")
Meine Auswahl zu sein scheinen (1) mit scale="free"
, unbequem (horizontal) Etiketten:
ggplot(dd2,aes(x=f2,y=y))+facet_wrap(~f1,scale="free")+geom_violin()
(2) mit coord_flip()
, unbequem Waage
ggplot(dd2,aes(x=f2,y=y))+facet_wrap(~f1)+geom_violin()+coord_flip()
beiden Versuche (ggplot(dd2,aes(x=f2,y=y))+facet_wrap(~f1,scale="free")+geom_violin()+coord_flip()
)
ggplot2 gibt derzeit nicht frei Waage mit einer nicht-kartesischen coord oder coord_flip unterstützen.
Andere Ideen:
- Es gibt explizit horizontale Versionen einiger GEOMS (
geom_errorbarh
); Ich konnte hacken meine eigenegeom_violinh
... - Es gibt einige Diskussionen über horizontale GEOMS in einem pull request on ggplot2
- This (rather old) example Facetten verwendet +
geom_ribbon()
ein Violinstück zu hacken, aber es verbraucht Facettierung, es unvereinbar mitfacet_wrap()
machen
Für das, was es wert ist, das ist, was meine wirkliche Handlung wie (im Moment) aussieht:
Die Frage nach Spiegeln diese stehen noch, aber würde die x-Achsenbeschriftungen drehen oder sie auf den Feldern (dh 'gsub ("\\ s +", "\ n", "unzweckmäßig lange Label")') brechen Ihrem beabsichtigten Ziel entsprechen? –
Ich mag es nicht, sie zu drehen, aber ich bin vielleicht bereit, sie zu brechen oder zu kürzen ... –