绘制多行,字符为x轴

时间:2016-10-17 11:07:45

标签: r plot ggplot2

我有一个连续几年的每日时间序列。我希望每年都有同样的情节。

所以,我有一年中的所有日期,格式为%m-%d,每年一个点。

数据示例:

require(dplyr)
require(ggplot2)

df <- data.frame(Date = seq.Date(from = as.Date("2013-01-01"), 
                                 to = as.Date("2016-10-01"), by = "day"), 
                 xv = rnorm(1370))

# First I add my x-axis (Days) and my factor variable (Year)
df <- df %>% mutate(Year = format(Date, "%Y"), 
                    Days = format(Date, "%m-%d")) %>% select(Date, Year, Days, xv)

基本上它应该这样排序:(除了年份不应该在x轴上) enter image description here

现在,我可以很容易地做一个多面的情节,但这包含了下一年的空白空间,我不想要,我也非常希望同一个图表上的所有线条。

# Wrong faceted graph
ggplot(df, aes(x = Date, y = xv, group = Year, colour = Year)) + 
  geom_line() +
  facet_grid(.~Year)

我尝试过设置组= 1的变体,因此您可以使用字符/因子作为x变量进行绘图,但是您不能绘制多行。数据可能包含缺失的变量或不完整的天数(闰年等)。我真的更喜欢ggplot解决方案。

1 个答案:

答案 0 :(得分:1)

您可以将facet_wrapscales = 'free_x'结合使用:

ggplot(df, aes(x = Date, y = xv, group = Year, colour = Year)) + 
  geom_line() +
  facet_wrap(~Year, scales = 'free_x')

enter image description here