【问题标题】:How do I layer axis labels in ggplot?如何在 ggplot 中对轴标签进行分层?
【发布时间】:2017-05-20 12:32:18
【问题描述】:

我的数据采用以下结构:

month <- c("May", "June", "July", "May", "June", "July")
year <- c("2015", "2015", "2015", "2016", "2016", "2016")
value <- c(1:3, 3:1)
df <- data.frame(month, year, value)

(数据实际上是从 1 月一直到 12 月,这只是一个简短的可重复示例。)

我正在使用 ggplot 绘制 value 的时间序列图(假设我不能使用 plot.ts(),原因太复杂,无法在此处解释)。如何对 x 轴的标签进行分层,以便每个刻度线都标有月份,但在其下方还有另一个标签,年份如下,所以我得到类似:

-------+-------+-------+----//---+-------+-------+-----
      May     June    July      May     June    July
              2015                      2016

【问题讨论】:

  • 你可以看看stackoverflow.com/questions/20571306/…stackoverflow.com/questions/18165863/…(我不认为它们是重复的)。
  • 谢谢!这正是我正在寻找的。我进行了搜索,但没有找到这些文章。
  • 顺便说一句:我更喜欢 ISO8601 月份 2015-05、2015-06、2015-07、2016-05 等月份的标准命名。这样可以确保月份在转换为因子时以正确的顺序排序。

标签: r ggplot2


【解决方案1】:

我不会制作两个轴,而是一个轴,其中包含调整后的标签,其中包含换行符。该示例显示了如何在每个月的下方添加年份。我习惯只把年份放在 1 月以下,如果 1 月不存在,则在一年中绘制的第一个月。您可以根据自己的喜好调整标签的准备。

df$lab <- factor(1:6, labels = paste0(month,"\n",year))
ggplot(df, aes(x = lab, y = value)) + geom_point()

【讨论】:

  • 非常巧妙地将label 参数用于强制执行给定排序顺序的factor() 函数。简单地使用paste() 而不使用这将导致标签按字母顺序排列 2015 年 6 月、2016 年 6 月、2015 年 7 月等,从而忽略作为主要排序标准的年份。
【解决方案2】:

另一种选择是按年份使用分面,并将分面标签放在 x 轴标签下方。这使得每年只有一年的标签变得更容易。我已经删除了面板之间的空间以创建一个无面情节的外观,但在年份之间添加了一条垂直线以突出时间的中断。如果您喜欢单独的面板,则只需删除 panel.spacingpanel.border theme 元素。

theme_set(theme_classic())

df$month = factor(df$month, levels=month.name)

ggplot(df, aes(x = month, y = value)) + 
  geom_point() +
  facet_grid(. ~ year, switch="x") +
  theme(strip.placement="outside",
        strip.background=element_rect(colour=NA),
        panel.spacing.x=unit(0,"lines"),
        panel.border=element_rect(colour="grey50", fill=NA))

根据您的用例,您可能会发现最好每年使用一种颜色美学并将所有线条放在一个面板上:

ggplot(df, aes(x = month, y = value, colour=year, group=year)) + 
  geom_line() + geom_point() 

【讨论】:

    猜你喜欢
    • 2014-10-30
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 2016-10-22
    相关资源
    最近更新 更多