【问题标题】:Add text (not values) to stacked horizontal bar plot in R using base graphics使用基本图形将文本(不是值)添加到 R 中的堆叠水平条形图
【发布时间】: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)

标签: r text bar-chart


【解决方案1】:

您可以添加文本和值。根据需要进行修改。

id <- letters[seq(1,4)]
groups <- LETTERS[seq(1,8)]
scores <- matrix((c(2,0,7,0,1,2,0,1,0,1,2,0,0,2,0,0,0,0,8,0,0,0,3,1,0,0,2,0,0,8,0,2)),ncol=8)
row.names(scores) <- id

acsc=apply(scores,2,cumsum)
par(mfrow=c(1, 1), mar=c(2, 5, 2, 2))
bb <- barplot(scores, horiz = T, las = 2, cex.names = 0.5,xaxt="n",col=c("grey60","grey70","grey80","grey90"),
    cex.axis=0.5,cex.lab=0.5, legend=F,main="Weekly Scores", space=0, border=NA)
sapply(1:4,function(z)
text(acsc[z,]-.3,bb,labels=sapply(scores[z,],function(zr)ifelse(zr==0,"",paste(rownames(scores)[z],zr,sep="="))),cex=.8))
axis(2,at=bb,groups)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多