Necesito producir una serie de gráficos de barras agrupadas horizontales. La función de gráfico de barras no ajusta automáticamente los márgenes de la gráfica, por lo tanto, el texto se corta.Ajuste automático de los márgenes en el gráfico de barras horizontales
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)
no puedo encontrar una opción para mover automáticamente la trama más a la derecha, la función R dotchart manera lo hace ((procedimiento de diagrama de barras en el SAS ajusta automáticamente los márgenes también). obviamente, siempre puedo ajustar los márgenes de forma manual utilizando la función de la altura.
par(mar=c(5.1, 13 ,4.1 ,2.1))
va a avanzar la trama hacia la derecha
¿Hay una opción para mover la gráfica a la derecha (es decir ajustar los márgenes) automáticamente dependiendo de la longitud del texto?
puedo pensar en 2 appproaches relacionados con hacerlo mediante programación: 1) Calcular la longitud de la cadena de texto más largo y en consecuencia ajustar el margen izquierdo 2) Crear una parcela dotchart de los datos, de alguna manera capturar los márgenes y el uso los mismos márgenes en el gráfico de barras.
¿Hay alguna manera más fácil de hacerlo? Gracias!
Gracias! Probé tu código con diferentes cadenas de texto, los márgenes funcionan bien. ¿Cómo se te ocurrió 1.8? –
@MaxCherny: solo una aritmética básica en la relación nchar: margin y un poco de prueba y error. No puedo prometer que sea adaptable a diferentes tamaños/estilos de fuente, pero los cálculos se pueden ajustar fácilmente como puede ver. – thelatemail
@thelatemail - Me pregunto si la solución anterior tiene en cuenta los factores de expansión, por ejemplo, si configuro cex.lab = 2, en lugar de la predeterminada 1. ¡Gracias! – Alex