【问题标题】:Add group label for multiple bars in a ggplot barplot在 ggplot barplot 中为多个条添加组标签
【发布时间】:2018-11-16 15:17:16
【问题描述】:

我有数据框

DF <- data.frame(V1 = factor(c("Option 1", "Option 1", "Option 1", "Option 2", "Option 1", "Option 2", "Option 1", "Option 1", "Option 2", NA, "Option 2", "Option 1", "Option 2", "Option 1", "Option 2", "Option 1", "Option 2", "Option 1")),
                  Location = factor(c("California", "Georgia", "Texas", "Texas", "Georgia", "Georgia", "California", "Georgia", "Texas", "Texas", "California", "Georgia", "Mexico", "Mexico", "Mexico", "Canada", "Canada", "Canada")))

当我在 ggplot 中绘制它时,它会有点混乱,因为美国各州和其他两个国家并排显示:

DF %>%
  filter(!is.na(V1)) %>% 
  ggplot(aes(Location, ..count..)) +
  geom_bar(aes(fill = V1), position = "dodge")

我可以通过重新排序Location 变量的级别来使图更清晰:

DF$Location = factor(DF$Location, levels=c("Canada", "Mexico", "California", "Georgia", "Texas"))
DF %>%
  filter(!is.na(V1)) %>% 
  ggplot(aes(Location, ..count..)) +
  geom_bar(aes(fill = V1), position = "dodge")

但我想以某种方式标记加利福尼亚、乔治亚和德克萨斯是美国的州,例如(但不一定)在三个州的名称下方添加“美国”。有没有办法做到这一点?

下面的评论者认为这是重复的。我不这么认为。在下面链接的案例中,数据框中已经有一个“国家”等效类别。我当然可以创建一个,但是对于大型数据框来说这很耗时。我希望有一种方法可以将“国家”标签添加到情节中。

【问题讨论】:

标签: r ggplot2


【解决方案1】:

我会使用 facet_grid 将美国各州和其他位置分隔到单独的面板中。像这样:

DF$isUS <- ifelse(DF$Location %in% c("California", "Georgia", "Texas"), "US States", "Rest of world")

DF %>%
  filter(!is.na(V1)) %>% 
  ggplot(aes(Location, ..count..)) +
  geom_bar(aes(fill = V1), position = "dodge") +facet_grid(~isUS, space="free", scales="free")

【讨论】:

  • 谢谢,卢克。这不完全是我的想法,但它确实有效。
猜你喜欢
  • 1970-01-01
  • 2021-11-14
  • 2012-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-03
  • 1970-01-01
  • 2017-11-02
相关资源
最近更新 更多