【问题标题】:ggplot2 for bar plot with two same tick labelsggplot2 用于具有两个相同刻度标签的条形图
【发布时间】:2018-07-19 23:46:02
【问题描述】:

我有一个像这样的数据集:

日期值标签

2016/01 2 年

2016 年 2 月 3 日

2016 年 3 月 4 日

2016 年 4 月 5 日

2016 年 5 月 4 日

2016/05 4 B

2016/06 5 B

2016/07 6 B

日期“2016/05”在我的数据集中出现了两次。我想使用 ggplot2 生成条形图。如何让条形图有两个相同的刻度标签?

目标图是这样的:

【问题讨论】:

标签: r ggplot2 bar-chart


【解决方案1】:

一种选择是创建一个新的ID 列,以便您在 x 轴上有唯一的类别:

library(tidyverse)

df <- structure(list(Date = c("2016/01", "2016/02", "2016/03", "2016/04", 
                              "2016/05", "2016/05", "2016/06", "2016/07"), 
                     Value = c(2L, 3L,4L, 5L, 4L, 4L, 5L, 6L), 
                     Label = c("A", "A", "A", "A", "A", "B", "B", "B")), .Names = c("Date", "Value", "Label"), 
                row.names = c(NA, -8L), class = c("tbl_df", "tbl", "data.frame"))

df %>%
  unite(ID, Date, Label) %>% 
  ggplot(aes(ID, Value)) +
  geom_col()

或者,您可以使用Label 列对数据进行分面,如下所示:

df %>% 
  ggplot(aes(Date, Value)) +
  geom_col() +
  facet_wrap(.~Label, scales = "free_x")

【讨论】:

  • 感谢您的回答!我更喜欢第二个情节。但是,当我运行代码时,出现了错误!
  • df % ggplot(aes(Date, Value)) + geom_col() + facet_wrap( .~标签,刻度=“free_x”)
  • 在丰富显示对象时出错:combine_vars(data, params$plot_env, vars, drop = params$drop) 中的错误:至少一层必须包含用于构面的所有变量
  • 代码对我来说很好用。尝试从 facet 参数中删除句点facet_wrap(~Label, scales = "free_x")