Rprogrammer
Rprogrammer

Reputation: 477

How plot timing graph with specific options

I have this data.table which has 3 columns. the first one is about MonthlySalesMean , the second is the year and then the month.

> data[,MonthlySalesMean:=mean(StoreMean),by=c("DateMonth","DateYear")][,c("MonthlySalesMean","DateYear","DateMonth")]
        MonthlySalesMean DateYear DateMonth
     1:         6839.340     2015         7
     2:         6839.340     2015         7
     3:         6839.340     2015         7
     4:         6839.340     2015         7
     5:         6839.340     2015         7
    ---                                    
641938:         6852.171     2013         1
641939:         6852.171     2013         1
641940:         6852.171     2013         1
641941:         6852.171     2013         1
641942:         6852.171     2013         1

I need to plot a graph of three lines because I have 3 years:

> unique(data[,DateYear])
[1] 2015 2014 2013
> 

And For each year or each line, it should be plotted across all months of a year the MonthlySalesMean values. In another word it should be like this graph:

enter image description here

How can I do this, please? thank you for advance!

Upvotes: 0

Views: 101

Answers (1)

Jack Brookes
Jack Brookes

Reputation: 3830

Without a reproducible example, I can't test with your data, but here's the idea. You plot a path, with aesthetics of sales (y) against month (x) grouped by year (color)

library(tidyverse)

example_data <- tibble(
  MonthlySalesMean = rnorm(36, 100, 20),
  DateYear = c(rep(2013, 12), rep(2014, 12), rep(2015, 12)),
  DateMonth = c(1:12, 1:12, 1:12)
)


ggplot(example_data, aes(x = DateMonth, y = MonthlySalesMean, color = as.factor(DateYear))) + 
  geom_path() + 
  geom_point(size = 2) + 
  geom_text(aes(label = DateYear),
            data = filter(example_data, DateMonth == 1),
            nudge_x = -0.5) + # plot year numbers 
  scale_x_continuous(breaks = 1:12, labels = month.abb) +
  scale_colour_manual(guide = FALSE,  # hides legend
                      values  = c("red", "green", "blue")) + # custom colors
  expand_limits(x = 0.5) + # adds a space before January
  labs(x = "Month", y = "Sales") + 
  theme_bw() +
  theme(panel.grid = element_blank()) # removes gridlines

enter image description here

Upvotes: 1

Related Questions