gpt4 book ai didi

r - 水平条形图中边距的自动调整

转载 作者:行者123 更新时间:2023-12-04 02:08:05 26 4
gpt4 key购买 nike

我需要制作一系列水平分组的条形图。 barplot 函数不会自动调整绘图的边距,因此文本会被截断。

  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)

enter image description here

我找不到自动将图进一步向右移动的选项,就像 R dotchart 函数那样((SAS 中的条形图程序也会自动调整边距)。显然,我总是可以使用 par 函数手动调整边距.
  par(mar=c(5.1, 13 ,4.1 ,2.1))

将把情节向右移动

enter image description here

是否可以根据文本的长度自动将绘图向右移动(即调整边距)?

我可以想到 2 个相关的方法来以编程方式执行此操作:
1) 计算最长文本字符串的长度并相应调整左边距
2)为数据创建一个点图,以某种方式捕获边距并在条形图中使用相同的边距。

有没有更简单的方法来做到这一点?
谢谢!

最佳答案

我认为你的第一个想法可能是最合适的。像这样的东西似乎工作正常,不需要太多东西。

ylabels <-  c(  "1oooooooooooo",
"2",
"3",
"4"
)

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"),
ylabels))

# adjust to the maximum of either the default
# or a figure based on the maximum length
par(mar=c(5.1, max(4.1,max(nchar(ylabels))/1.8) ,4.1 ,2.1))

barplot(test,
las=2,
beside = TRUE,
legend=T,
horiz=T)

检查后 dotchart ,更通用的解决方案也可能是使用:
linch <-  max(strwidth(ylabels, "inch")+0.4, na.rm = TRUE)
par(mai=c(1.02,linch,0.82,0.42))

关于r - 水平条形图中边距的自动调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10490763/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com