【问题标题】:R - Two sets of labels on on axis in a bar plotR - 条形图中轴上的两组标签
【发布时间】:2014-10-09 13:00:11
【问题描述】:

我有一个如下所示的数据框:

ID    Group    Measure1    Measure 2
001   A        59          559
002   A        44          623 
003   B        129         498
004   C        99          504
005   C        78          378

我想生成一个在 X 轴上有两组标签的条形图:一个用其 ID 值标识每个条形图,另一个用它所属的组标记每个条形图。我的数据设置为使同一组的成员在数据框中相邻。

按组对条形进行颜色编码的明显解决方案不适用,因为我已经使用颜色编码来显示 Measure1 和 Measure2(在某些情况下是 Measure3)。如果除了标签还有另一种显示组信息的方式,我很想听听,但我认为图表底部的两组标签可能是最好的解决方案。这是一个只有一组标签的图:

我想在“患者 ID”标签下方添加组标签。

如果我绝望了,我会使用 Photoshop 或 Paint 添加标签,但我希望有一种方法可以使用 R 添加第二组标签。

【问题讨论】:

  • 你应该添加你的代码
  • 并且 barplot 返回 x 值的向量,所以保存:bp <- barplot(...);然后像text(bp, y = -1.5, labels = letters[1:3], xpd = TRUE)一样使用多行文字或文本或类似的东西

标签: r axis-labels graphing


【解决方案1】:

试试:

mm = melt(ddf, id=c('ID', 'Group'))
ggplot(mm) + geom_bar(aes(x=interaction(ID, Group), y=value, group=variable, fill=variable), position='dodge', stat='identity')

分隔符可以调整:

> with(ddf, interaction(ID, Group, sep="_"))
[1] 1_A 2_A 3_B 4_C 5_C
Levels: 1_A 2_A 3_A 4_A 5_A 1_B 2_B 3_B 4_B 5_B 1_C 2_C 3_C 4_C 5_C
> 
> with(ddf, interaction(ID, Group, sep=" "))
[1] 1 A 2 A 3 B 4 C 5 C
Levels: 1 A 2 A 3 A 4 A 5 A 1 B 2 B 3 B 4 B 5 B 1 C 2 C 3 C 4 C 5 C

【讨论】:

  • 这是一个很好的解决方案。您知道是否可以修改标签的分隔方式吗?就我而言,换行符或空格比句号更可取。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-24
  • 2013-12-13
  • 2019-09-22
  • 2012-05-04
相关资源
最近更新 更多