在R / ggplot2中将数字转换为月/年

时间:2017-10-28 19:58:25

标签: r ggplot2

我目前正在处理一个数据集,其中包含每个观察值“MarketStart”。该参数的值从-24(对应于2012年1月)到47(对应于2017年10月)。数据收集于2014年1月开始,因此对应于0。

我正在使用ggplot2来显示结果,但我无法以可接受的方式标记x轴,这是我现在使用的代码:

df <- data.frame(Name,Price,ObsMonth,Producer)
plot.all <- 
  ggplot(data=df, aes(ObsMonth, Price, group = Name)) +
  geom_point(alpha=0.05) + 
  geom_line() +
  scale_x_continuous(expand = c(0, 0), limits = c(1, 36)) +
  scale_y_continuous(expand = c(0, 0), limits = c(0, 1200)) +             
  labs(x="ObsMonth", y="Price in Euro", title="title")

我现在限制了x轴,但是我需要将这些数字显示为日期“2012年1月,2012年2月,......,Dez 2017”,对应于上面解释的数值。< / p>

edit1:这里要求的是dput(df)提供的输出的一部分:

42L, 44L, 9L, 12L, 35L, 21L, 11L, 21L, 25L, 24L, 34L, 32L, 29L, 
41L, 36L, 33L, 30L, 43L, 44L, 31L, 39L, 35L, 27L, 42L, 23L, 28L, 
26L, 38L, 22L, 33L, 30L, 39L, 25L, 32L, 28L, 36L, 23L, 27L, 24L, 
34L, 29L, 26L, 22L, 21L, 45L, 35L, 37L, 31L, 43L, 44L, 38L, 39L, 
28L, 29L, 25L, 22L, 21L, 34L, 23L, 36L, 35L, 31L, 33L, 37L, 44L, 
26L, 30L, 27L, 24L, 27L, 25L, 29L, 28L, 26L, 30L, 31L, 31L, 30L, 
18L, 15L, 23L, 24L, 20L, 19L, 16L, 22L, 21L, 25L, 14L, 6L, 3L, 
4L, 7L, 9L, 11L, 12L, 17L, 16L, 14L, 5L, 10L, 2L, 8L, 1L, 15L, 
13L, 13L, 10L, 16L, 12L, 15L, 14L, 24L, 26L, 11L, 8L, 16L, 3L, 
6L, 13L, 12L, 29L, 19L, 4L, 1L, 9L, 17L, 25L, 28L, 7L, 18L, 10L, 
15L, 27L, 2L, 5L, 14L, 20L, 22L, 21L, 23L, 19L, 18L, 16L, 6L, 
3L, 2L, 1L, 8L, 5L, 4L, 11L, 7L, 14L, 15L, 9L, 13L, 12L, 10L, 
..... and the end part.....
, .Names = c("Name", 
"Preis", "Erhebungsmonat", "Hersteller"), row.names = c(NA, -6732L
), class = "data.frame")

1 个答案:

答案 0 :(得分:1)

您可以在数据集中添加date列。

start <- as.Date("2012-01-01")
df$date <- seq.Date(from = start, length.out = dim(df)[1], by = "month")

然后相应地更改你的情节

plot.all <-
ggplot(data=df, aes(date, Price, group = Name)) +
geom_point(alpha=0.05) +
geom_line() +
scale_x_continuous(expand = c(0, 0), limits = c(1, 36)) +
scale_y_continuous(expand = c(0, 0), limits = c(0, 1200)) +
labs(x="date", y="Price in Euro", title="title")