Blame view

ISO27001effectiveness/R/ReportGraphs.R 6.49 KB
Miguel Tuñón authored
1
2
3
4
5
6
7
8
#' Return every graph used in the report file
#'
#' @param Cert_PerCountry data.frame with the processed data of ISO 27001 certifications
#' @param Attacks data.frame with the processed data of cyberattacks
#'
#' @return data.frame
#' @export
GetReportGraphs <- function(Cert_PerCountry,Attacks) {
Imanol-Mikel Barba Sabariego authored
9
  #2012
Miguel Tuñón authored
10
  graph1 <- ggplot2::qplot(main = "Countries with above average number of companies certified with ISO 27001 (2012)",
Imanol-Mikel Barba Sabariego authored
11
12
                  x = reorder(country_short,X2012),
                  y = X2012,
Miguel Tuñón authored
13
14
                  xlab = "Country",
                  ylab = "Number of certifications",
Imanol-Mikel Barba Sabariego authored
15
16
17
18
                  data = Cert_PerCountry[Cert_PerCountry$X2012 > mean(Cert_PerCountry$X2012),])
  attacks2k12 <- Attacks[Attacks$Date < "2013-01-01" & Attacks$Date >= "2012-01-01",]
  frameAttacks2k12 <- as.data.frame(table(attacks2k12$Country))
  colnames(frameAttacks2k12) <- c("Country","Attacks")
Miguel Tuñón authored
19
  graph2 <- ggplot2::qplot(main = "Countries with above average number of cyberattacks (2012)",
Imanol-Mikel Barba Sabariego authored
20
21
                  x = reorder(Country,Attacks),
                  y = Attacks,
Miguel Tuñón authored
22
23
                  xlab = "Country",
                  ylab = "Number of attacks",
Imanol-Mikel Barba Sabariego authored
24
25
26
27
28
                  data = frameAttacks2k12[frameAttacks2k12$Attacks > mean(frameAttacks2k12$Attacks),])

  Attacks2012ByMonth <- mutate(attacks2k12, month = format(attacks2k12$Date, "%m")) %>% group_by(month)
  Attack2012FreqByMonth <- as.data.frame(table(Attacks2012ByMonth$month))
  colnames(Attack2012FreqByMonth) <- c("Month", "Attacks")
Miguel Tuñón authored
29
30
  graph3 <- ggplot2::qplot(x = as.numeric(Month),
                  y = Attacks,
Imanol-Mikel Barba Sabariego authored
31
32
33
34
                  main = "Global cyberattack progression by month (2012)",
                  data = Attack2012FreqByMonth,
                  geom = c("point", "smooth"),
                  xlim = c(1,12),
Miguel Tuñón authored
35
                  xlab = "Month") + ggplot2::scale_x_continuous(breaks = 1:12)
Imanol-Mikel Barba Sabariego authored
36
37

  #2013
Miguel Tuñón authored
38
  graph4 <- ggplot2::qplot(main = "Countries with above average number of companies certified with ISO 27001 (2013)",
Imanol-Mikel Barba Sabariego authored
39
40
                  x = reorder(country_short,X2013),
                  y = X2013,
Miguel Tuñón authored
41
42
                  xlab = "Country",
                  ylab = "Number of certifications",
Imanol-Mikel Barba Sabariego authored
43
44
45
46
                  data = Cert_PerCountry[Cert_PerCountry$X2013 > mean(Cert_PerCountry$X2013),])
  attacks2k13 <- Attacks[Attacks$Date < "2014-01-01" & Attacks$Date >= "2013-01-01",]
  frameAttacks2k13 <- as.data.frame(table(attacks2k13$Country))
  colnames(frameAttacks2k13) <- c("Country","Attacks")
Miguel Tuñón authored
47
  graph5 <- ggplot2::qplot(main = "Countries with above average number of cyberattacks (2013)",
Imanol-Mikel Barba Sabariego authored
48
49
                  x = reorder(Country,Attacks),
                  y = Attacks,
Miguel Tuñón authored
50
51
                  xlab = "Country",
                  ylab = "Number of attacks",
Imanol-Mikel Barba Sabariego authored
52
53
54
55
56
                  data = frameAttacks2k13[frameAttacks2k13$Attacks > mean(frameAttacks2k13$Attacks),])

  Attacks2013ByMonth <- mutate(attacks2k13, month = format(attacks2k13$Date, "%m")) %>% group_by(month)
  Attack2013FreqByMonth <- as.data.frame(table(Attacks2013ByMonth$month))
  colnames(Attack2013FreqByMonth) <- c("Month", "Attacks")
Miguel Tuñón authored
57
58
  graph6 <- ggplot2::qplot(x = as.numeric(Month),
                  y = Attacks,
Imanol-Mikel Barba Sabariego authored
59
60
61
62
                  main = "Global cyberattack progression by month (2013)",
                  data = Attack2013FreqByMonth,
                  geom = c("point", "smooth"),
                  xlim = c(1,12),
Miguel Tuñón authored
63
                  xlab = "Month") + ggplot2::scale_x_continuous(breaks = 1:12)
Imanol-Mikel Barba Sabariego authored
64
65

  #2014
Miguel Tuñón authored
66
  graph7 <- ggplot2::qplot(main = "Countries with above average number of companies certified with ISO 27001 (2014)",
Imanol-Mikel Barba Sabariego authored
67
68
                  x = reorder(country_short,X2014),
                  y = X2014,
Miguel Tuñón authored
69
70
                  xlab = "Country",
                  ylab = "Number of certifications",
Imanol-Mikel Barba Sabariego authored
71
72
73
74
                  data = Cert_PerCountry[Cert_PerCountry$X2014 > mean(Cert_PerCountry$X2014),])
  attacks2k14 <- Attacks[Attacks$Date < "2015-01-01" & Attacks$Date >= "2014-01-01",]
  frameAttacks2k14 <- as.data.frame(table(attacks2k14$Country))
  colnames(frameAttacks2k14) <- c("Country","Attacks")
Miguel Tuñón authored
75
  graph8 <- ggplot2::qplot(main = "Countries with above average number of cyberattacks (2014)",
Imanol-Mikel Barba Sabariego authored
76
77
                  x = reorder(Country,Attacks),
                  y = Attacks,
Miguel Tuñón authored
78
79
                  xlab = "Country",
                  ylab = "Number of attacks",
Imanol-Mikel Barba Sabariego authored
80
81
82
83
84
                  data = frameAttacks2k14[frameAttacks2k14$Attacks > mean(frameAttacks2k14$Attacks),])

  Attacks2014ByMonth <- mutate(attacks2k14, month = format(attacks2k14$Date, "%m")) %>% group_by(month)
  Attack2014FreqByMonth <- as.data.frame(table(Attacks2014ByMonth$month))
  colnames(Attack2014FreqByMonth) <- c("Month", "Attacks")
Miguel Tuñón authored
85
86
  graph9 <- ggplot2::qplot(x = as.numeric(Month),
                  y = Attacks,
Imanol-Mikel Barba Sabariego authored
87
88
89
90
                  main = "Global cyberattack progression by month (2014)",
                  data = Attack2014FreqByMonth,
                  geom = c("point", "smooth"),
                  xlim = c(1,12),
Miguel Tuñón authored
91
                  xlab = "Month") + ggplot2::scale_x_continuous(breaks = 1:12)
Imanol-Mikel Barba Sabariego authored
92
93

  #2015
Miguel Tuñón authored
94
  graph10 <- ggplot2::qplot(main = "Countries with above average number of companies certified with ISO 27001 (2015)",
Imanol-Mikel Barba Sabariego authored
95
96
                  x = reorder(country_short,X2015),
                  y = X2015,
Miguel Tuñón authored
97
98
                  xlab = "Country",
                  ylab = "Number of certifications",
Imanol-Mikel Barba Sabariego authored
99
100
101
102
                  data = Cert_PerCountry[Cert_PerCountry$X2015 > mean(Cert_PerCountry$X2015),])
  attacks2k15 <- Attacks[Attacks$Date < "2016-01-01" & Attacks$Date >= "2015-01-01",]
  frameAttacks2k15 <- as.data.frame(table(attacks2k15$Country))
  colnames(frameAttacks2k15) <- c("Country","Attacks")
Miguel Tuñón authored
103
  graph11 <- ggplot2::qplot(main = "Countries with above average number of cyberattacks (2015)",
Imanol-Mikel Barba Sabariego authored
104
105
                  x = reorder(Country,Attacks),
                  y = Attacks,
Miguel Tuñón authored
106
107
                  xlab = "Country",
                  ylab = "Number of attacks",
Imanol-Mikel Barba Sabariego authored
108
109
110
111
112
                  data = frameAttacks2k15[frameAttacks2k15$Attacks > mean(frameAttacks2k15$Attacks),])

  Attacks2015ByMonth <- mutate(attacks2k15, month = format(attacks2k15$Date, "%m")) %>% group_by(month)
  Attack2015FreqByMonth <- as.data.frame(table(Attacks2015ByMonth$month))
  colnames(Attack2015FreqByMonth) <- c("Month", "Attacks")
Miguel Tuñón authored
113
  graph12 <- ggplot2::qplot(x = as.numeric(Month),
Imanol-Mikel Barba Sabariego authored
114
115
116
117
118
                  y = Attacks,
                  main = "Global cyberattack progression by month (2015)",
                  data = Attack2015FreqByMonth,
                  geom = c("point", "smooth"),
                  xlim = c(1,12),
Miguel Tuñón authored
119
                  xlab = "Month") + ggplot2::scale_x_continuous(breaks = 1:12)
Imanol-Mikel Barba Sabariego authored
120
121
122
123
124
125




  list(graph1,graph2,graph3,graph4,graph5,graph6,graph7,graph8,graph9,graph10,graph11,graph12)
}