【问题标题】:How to merge column labels in barplot in R (a stacked barplot)?如何在 R 中的条形图中合并列标签(堆叠条形图)?
【发布时间】:2013-08-16 00:46:00
【问题描述】:

我在 R 中的数据如下所示:

    1-12 1-12 1-15 1-15 1-20 1-20 2-6 2-6 3-1-1 3-1-1 3-1 3-1 3-2 3-2 3-3 3-3
N    0    0   14    0   17    0   9   0    27     0   9   0  13   0  33   0
P    0    0    0   12    0   12   0   5     0    13   0   6   0   0   0   9
F    0    0    0    0    0    0   0   2     0    14   0   0   0   6   0  20

通过 dput(data) 在 R 中的结果是:

    structure(c(0L, 0L, 0L, 0L, 0L, 0L, 14L, 0L, 0L, 0L, 12L, 0L, 
17L, 0L, 0L, 0L, 12L, 0L, 9L, 0L, 0L, 0L, 5L, 2L, 27L, 0L, 0L, 
0L, 13L, 14L, 9L, 0L, 0L, 0L, 6L, 0L, 13L, 0L, 0L, 0L, 0L, 6L, 
33L, 0L, 0L, 0L, 9L, 20L), .Dim = c(3L, 16L), .Dimnames = list(
c("N", "P", "F"), c("1-12", "1-12", "1-15", "1-15", "1-20", 
"1-20", "2-6", "2-6", "3-1-1", "3-1-1", "3-1", "3-1", "3-2", 
"3-2", "3-3", "3-3")))

我的代码是:

barplot(data,space=c(1,0.25),legend=rownames(data),col=c('white','black','grey'),las=2)

它看起来像一个普通的条形图,每列底部都有一个标签...

但是,x轴的标签太多了,我想将两列的名称合并为一个(因为它们具有相同的名称),即在前两列的中间,只有底部有一个标签“1-12”,所以总共会有八个标签。我怎样才能做出这种改变?

非常感谢!

【问题讨论】:

  • 我不想猜测这可能是什么结构,然后尝试将它拼凑在一起,矩阵或格式错误的 data.frame 或其他任何东西,所以你为什么不在上面发布 dput(.)请反对?
  • @Dwin - 同意。它必须是 matrix 但是如果 barplot 已经在工作。
  • 是的,因为我仍然无法将图像放入问题中,所以我发布了 dput()

标签: r plot bar-chart


【解决方案1】:

如果您只想在每个组下放置居中的标签,您可以执行以下操作:

# suppress the x-axis and save your original plot's bar locations
bp <- barplot(data,space=c(1,0.25),legend=rownames(data),
             col=c('white','black','grey'),las=2,
             xaxt="n")

# draw a new axis using these values
axis(1,at=rowMeans(matrix(bp,ncol=2,byrow=TRUE)),
     labels=unique(colnames(data)),lty=0)

当然忽略重叠的图例......这可以通过在原始 barplot 调用中使用 legend.args 更好地放置来修复

【讨论】:

  • 感谢您对 dput 的建议!我将 dput 的结果放在问题中,以便您查看它...实际上我使用 data=rbind(F,P,N) 然后使用 colnames(data)=c("1-12","1- 15","1-20") 重命名列。但是,我不想生成一个将 P、F、N 堆叠在一起的列,我的条形图就像所有“N”都在一个列中,而“F”“N”被分组到一个列中。与barplot无关,我只是想改变x轴的标签。
  • @user2687500 - 我进行了编辑,希望能更好地解决您的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-21
  • 2021-03-21
  • 1970-01-01
  • 2018-12-22
  • 2022-01-18
  • 2013-03-03
相关资源
最近更新 更多