Ich muss eine Reihe von horizontal gruppierten Balkendiagrammen erstellen. Die Barplot-Funktion passt die Ränder des Plots nicht automatisch an, daher wird der Text abgeschnitten.Automatische Anpassung der Ränder im horizontalen Balkendiagramm
graphics.off() # close graphics windows
test <- matrix(c(55,65,30, 40,70,55,75,6,49,45,34,20),
nrow =3 ,
ncol=4,
byrow=TRUE,
dimnames = list(c("Subgroup 1", "Subgroup 2", "Subgroup 3"),
c(
"Category 1 Long text",
"Category 2 very Long text",
"Category 3 short text",
"Category 4 very short text"
)))
barplot(test,
las=2,
beside = TRUE,
legend=T,
horiz=T)
Ich kann nicht eine Option finden, um automatisch die Handlung weiter nach rechts, der Weg R dotchart Funktion macht es ((barchart Verfahren in SAS stellt die Ränder automatisch auch) zu bewegen. offensichtlich kann ich immer passen Sie die Ränder manuell par-Funktion.
par(mar=c(5.1, 13 ,4.1 ,2.1))
das Grundstück nach rechts
bewegen
Gibt es eine Option, um das Diagramm nach rechts zu verschieben (d. H. die Ränder anpassen) automatisch abhängig von der Länge des Textes?
kann ich mich vorstellen 2 im Zusammenhang appproaches es programmatisch zu tun: 1) Berechnen Sie die Länge der längsten Textzeichenfolge und entsprechend den linken Rand 2) Erstellen Sie einen dotchart Plot für die Daten anpassen, erfassen irgendwie die Ränder und Verwendung die gleichen Ränder in Balkendiagramm.
Gibt es einen einfacheren Weg? Danke!
Thank you! Ich habe Ihren Code mit verschiedenen Textstrings versucht, die Ränder funktionieren gut. Wie bist du auf 1.8 gekommen? –
@MaxCherny - nur einige Grundrechenarten auf dem nchar: margin ratio und ein bisschen Versuch und Irrtum. Ich kann nicht versprechen, dass es an verschiedene Schriftgrößen/Stile angepasst werden kann, aber die Berechnungen können ziemlich einfach angepasst werden, wie Sie sehen können. – thelatemail
@thelatemail - Ich frage mich, ob die obige Lösung berücksichtigt Expansionsfaktoren, sagen wir, wenn ich cex.lab = 2, anstatt der Standard 1 gesetzt. Danke! – Alex