【发布时间】:2015-06-26 15:31:00
【问题描述】:
我正在尝试使用 R 中的堆叠条形图创建一个显示分数的信息图,其中包含一个分组因素和一个识别因素。我想在栏的相关部分顶部写下 ID。我遇到的所有答案都讨论了如何将条形的值添加为标签,而不是行名。
这是我目前拥有的:
id <- letters[seq(1,4)]
groups <- LETTERS[seq(1,8)]
scores <- matrix((c(0,0,7,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,8,0,2)),ncol=8)
row.names(scores) <- id
par(mfrow=c(1, 1), mar=c(2, 5, 2, 2))
bb <- barplot(scores, horiz = T, las = 2, cex.names = 0.5,xaxt="n", cex.axis=0.5,cex.lab=0.5, legend=F,main="Weekly Scores", space=0, border=NA)
我想要这样的东西Adding values to barplot of table in R 但是水平而不是垂直条,并且 ID 文本(a、b、c 等)代替值。如果可能,我宁愿不使用 ggplot 或任何其他包(由于管理员权限,使用包会限制工作中代码的用户友好性)。
为了让事情变得更复杂,我的 ID 值是(并且为了图形的目的必须保持)句子长度......我目前正在使用我在网上找到的一个函数来包装它们:
# Write function to wrap labels
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)
}
}
所以我想将换行的文本“放入”条中。任何帮助表示赞赏!
【问题讨论】:
-
您是否注意到您的情节有 8 个组,而不是 4 个?您正在绘制列,而不是行,但其中一些全为零。我这么说是因为您需要 8 个 ID,而不是 4 个。也许您想要的是
barplot函数中的t(scores)?