gpt4 book ai didi

R barplot : wrapping long text labels?

转载 作者:行者123 更新时间:2023-12-04 06:38:52 26 4
gpt4 key购买 nike

我指的是这个问题(Automatic adjustment of margins in horizontal bar chart)。我会在那儿问我的问题,但似乎我还没有这样做的权限。

想象一下水平条形图(如链接的问题),其中您可能会像我们在社会科学中一样经常遇到极长的标签(例如,调查项目的问题措辞,例如“我感觉不足以解决R中的问题”) )。

用户 theatemail 提供了一种解决方案,该解决方案如何根据标签的文本长度移动绘图的开始位置。对于长度例如为10或15个字符的标签来说,这行得通,但如果必须用非常长的标签来标记y轴,则无法无限期地移动图形的开始。

因此,更合适的做法是将文本标签包装在大量的单词/字符之后,例如,在我的示例中,您可能希望像这样包装它:

"I don't feel competent enough
to solve problems in R"

但是,我不知道如何在R中包装文本标签,而且不知道如何在自动移动图的开头时考虑到包装。例如,如果我有一个50个字符的标签,然后将其包装成2行,每行25个字符,那么如果 thelatemail 的解决方案考虑到这一点,那就太好了。

我非常感谢您提供有关此问题的帮助!
谢谢!

最佳答案

Marc Schwartz在R-help的帖子中提出了一种可能的解决方案:

a <- c("I don't feel competent enough to solve problems in R", "I don't feel competent enough to solve problems in R")

# Core wrapping function
wrap.it <- function(x, len)
{
sapply(x, function(y) paste(strwrap(y, len),
collapse = "\n"),
USE.NAMES = FALSE)
}


# Call this function with a list or vector
wrap.labels <- function(x, len)
{
if (is.list(x))
{
lapply(x, wrap.it, len)
} else {
wrap.it(x, len)
}
}

尝试一下:
> wrap.labels(a, 10)
[1] "I don't\nfeel\ncompetent\nenough to\nsolve\nproblems\nin R"
[2] "I don't\nfeel\ncompetent\nenough to\nsolve\nproblems\nin R"

或者
> wrap.labels(a, 25)
[1] "I don't feel competent\nenough to solve problems\nin R"
[2] "I don't feel competent\nenough to solve problems\nin R"

然后创建一个barplot:
wr.lap <- wrap.labels(a, 10)
barplot(1:2, names.arg = wr.lap, horiz = T, las = 2, cex.names = 0.5)

关于R barplot : wrapping long text labels?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20241065/

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