Assignment_6

Non-interactive ggplot Chart:

# load required packages
library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.2.1     ✔ readr     2.2.0
✔ forcats   1.0.1     ✔ stringr   1.6.0
✔ ggplot2   4.0.3     ✔ tibble    3.3.1
✔ lubridate 1.9.5     ✔ tidyr     1.3.2
✔ purrr     1.2.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(dslabs)
library(dplyr)
# load death data
head(death_prob)
  age  sex     prob
1   0 Male 0.006383
2   1 Male 0.000453
3   2 Male 0.000282
4   3 Male 0.000230
5   4 Male 0.000169
6   5 Male 0.000155
# convert prob to whole 
death_prob <- death_prob |> 
  mutate(prob = (prob*100))
death_prob
    age    sex    prob
1     0   Male  0.6383
2     1   Male  0.0453
3     2   Male  0.0282
4     3   Male  0.0230
5     4   Male  0.0169
6     5   Male  0.0155
7     6   Male  0.0145
8     7   Male  0.0135
9     8   Male  0.0120
10    9   Male  0.0105
11   10   Male  0.0094
12   11   Male  0.0099
13   12   Male  0.0134
14   13   Male  0.0207
15   14   Male  0.0309
16   15   Male  0.0419
17   16   Male  0.0530
18   17   Male  0.0655
19   18   Male  0.0791
20   19   Male  0.0934
21   20   Male  0.1085
22   21   Male  0.1228
23   22   Male  0.1339
24   23   Male  0.1403
25   24   Male  0.1433
26   25   Male  0.1451
27   26   Male  0.1475
28   27   Male  0.1502
29   28   Male  0.1538
30   29   Male  0.1581
31   30   Male  0.1626
32   31   Male  0.1669
33   32   Male  0.1712
34   33   Male  0.1755
35   34   Male  0.1800
36   35   Male  0.1855
37   36   Male  0.1920
38   37   Male  0.1988
39   38   Male  0.2060
40   39   Male  0.2141
41   40   Male  0.2240
42   41   Male  0.2362
43   42   Male  0.2509
44   43   Male  0.2684
45   44   Male  0.2890
46   45   Male  0.3121
47   46   Male  0.3386
48   47   Male  0.3707
49   48   Male  0.4091
50   49   Male  0.4531
51   50   Male  0.5013
52   51   Male  0.5524
53   52   Male  0.6059
54   53   Male  0.6611
55   54   Male  0.7187
56   55   Male  0.7800
57   56   Male  0.8456
58   57   Male  0.9144
59   58   Male  0.9865
60   59   Male  1.0622
61   60   Male  1.1458
62   61   Male  1.2350
63   62   Male  1.3235
64   63   Male  1.4097
65   64   Male  1.4979
66   65   Male  1.5967
67   66   Male  1.7109
68   67   Male  1.8392
69   68   Male  1.9836
70   69   Male  2.1465
71   70   Male  2.3351
72   71   Male  2.5482
73   72   Male  2.7794
74   73   Male  3.0282
75   74   Male  3.3022
76   75   Male  3.6201
77   76   Male  3.9858
78   77   Male  4.3891
79   78   Male  4.8311
80   79   Male  5.3228
81   80   Male  5.8897
82   81   Male  6.5365
83   82   Male  7.2491
84   83   Male  8.0288
85   84   Male  8.8916
86   85   Male  9.8576
87   86   Male 10.9438
88   87   Male 12.1619
89   88   Male 13.5176
90   89   Male 15.0109
91   90   Male 16.6397
92   91   Male 18.3997
93   92   Male 20.2855
94   93   Male 22.2911
95   94   Male 24.4094
96   95   Male 26.5091
97   96   Male 28.5508
98   97   Male 30.4926
99   98   Male 32.2919
100  99   Male 33.9065
101 100   Male 35.6018
102 101   Male 37.3819
103 102   Male 39.2510
104 103   Male 41.2135
105 104   Male 43.2742
106 105   Male 45.4379
107 106   Male 47.7098
108 107   Male 50.0953
109 108   Male 52.6000
110 109   Male 55.2300
111 110   Male 57.9915
112 111   Male 60.8911
113 112   Male 63.9357
114 113   Male 67.1325
115 114   Male 70.4891
116 115   Male 74.0135
117 116   Male 77.7142
118 117   Male 81.5999
119 118   Male 85.6799
120 119   Male 89.9639
121   0 Female  0.5374
122   1 Female  0.0353
123   2 Female  0.0231
124   3 Female  0.0165
125   4 Female  0.0129
126   5 Female  0.0116
127   6 Female  0.0107
128   7 Female  0.0101
129   8 Female  0.0096
130   9 Female  0.0092
131  10 Female  0.0091
132  11 Female  0.0096
133  12 Female  0.0111
134  13 Female  0.0138
135  14 Female  0.0174
136  15 Female  0.0214
137  16 Female  0.0254
138  17 Female  0.0294
139  18 Female  0.0330
140  19 Female  0.0364
141  20 Female  0.0399
142  21 Female  0.0436
143  22 Female  0.0469
144  23 Female  0.0497
145  24 Female  0.0522
146  25 Female  0.0546
147  26 Female  0.0572
148  27 Female  0.0604
149  28 Female  0.0644
150  29 Female  0.0690
151  30 Female  0.0740
152  31 Female  0.0792
153  32 Female  0.0841
154  33 Female  0.0886
155  34 Female  0.0929
156  35 Female  0.0977
157  36 Female  0.1034
158  37 Female  0.1098
159  38 Female  0.1171
160  39 Female  0.1253
161  40 Female  0.1347
162  41 Female  0.1452
163  42 Female  0.1571
164  43 Female  0.1706
165  44 Female  0.1857
166  45 Female  0.2022
167  46 Female  0.2204
168  47 Female  0.2411
169  48 Female  0.2648
170  49 Female  0.2910
171  50 Female  0.3193
172  51 Female  0.3491
173  52 Female  0.3801
174  53 Female  0.4119
175  54 Female  0.4449
176  55 Female  0.4813
177  56 Female  0.5201
178  57 Female  0.5583
179  58 Female  0.5952
180  59 Female  0.6325
181  60 Female  0.6749
182  61 Female  0.7238
183  62 Female  0.7776
184  63 Female  0.8368
185  64 Female  0.9032
186  65 Female  0.9794
187  66 Female  1.0673
188  67 Female  1.1676
189  68 Female  1.2815
190  69 Female  1.4105
191  70 Female  1.5616
192  71 Female  1.7318
193  72 Female  1.9118
194  73 Female  2.0996
195  74 Female  2.3033
196  75 Female  2.5413
197  76 Female  2.8197
198  77 Female  3.1313
199  78 Female  3.4782
200  79 Female  3.8689
201  80 Female  4.3258
202  81 Female  4.8490
203  82 Female  5.4223
204  83 Female  6.0446
205  84 Female  6.7338
206  85 Female  7.5133
207  86 Female  8.4033
208  87 Female  9.4177
209  88 Female 10.5633
210  89 Female 11.8407
211  90 Female 13.2476
212  91 Female 14.7801
213  92 Female 16.4331
214  93 Female 18.2012
215  94 Female 20.0783
216  95 Female 21.9758
217  96 Female 23.8630
218  97 Female 25.7065
219  98 Female 27.4706
220  99 Female 29.1189
221 100 Female 30.8660
222 101 Female 32.7180
223 102 Female 34.6810
224 103 Female 36.7619
225 104 Female 38.9676
226 105 Female 41.3057
227 106 Female 43.7840
228 107 Female 46.4111
229 108 Female 49.1957
230 109 Female 52.1475
231 110 Female 55.2763
232 111 Female 58.5929
233 112 Female 62.1085
234 113 Female 65.8350
235 114 Female 69.7851
236 115 Female 73.9722
237 116 Female 77.7142
238 117 Female 81.5999
239 118 Female 85.6799
240 119 Female 89.9639
#change theme, add labels, and customize font
death_prob_chart <-ggplot(death_prob, aes(x = age, y = prob)) +
  labs(x="Age (years",
       y="Probability of Death (percentages)",
       title="Probability of Death per Year for Males and Females",
       caption = "Source: DS Labs") + 
  theme_minimal(base_family = "mono")
death_prob_chart

# add layer with points
death_prob_chart +
  geom_point()

# decrease size of points and add color with legend
death_prob_chart +
  geom_point(size = .5, aes(color = sex)) +
  scale_color_brewer(name="Sex", palette = "Set1")

Interactive Chart Using highchart:

# load necessary libraries
library(highcharter)
Registered S3 method overwritten by 'quantmod':
  method            from
  as.zoo.data.frame zoo 

Attaching package: 'highcharter'
The following object is masked from 'package:dslabs':

    stars
library(RColorBrewer)
# make interactive with highchart
highchart() |>
  hc_add_series(data = death_prob,
                type = "line", 
                hcaes(x = age,
                      y = prob, 
                      group = sex))
# define color palette
shade <- brewer.pal(4, "Set1")

highchart() |>
  hc_add_series(data = death_prob,
                type = "line", 
                hcaes(x = age,
                      y = prob, 
                      group = sex)) |>
  hc_colors(shade)
# add labels
highchart() |>
  hc_add_series(data = death_prob,
                type = "line", 
                hcaes(x = age,
                      y = prob, 
                      group = sex)) |>
  hc_colors(shade) |>
  hc_xAxis(title = list(text="Age (years)")) |>
  hc_yAxis(title = list(text="Probability of Death (%)"))
# add font
highchart() |>
  hc_add_series(data = death_prob,
                type = "line", 
                hcaes(x = age,
                      y = prob, 
                      group = sex)) |>
  hc_colors(shade) |>
  hc_xAxis(title = list(text="Age (years)")) |>
  hc_yAxis(title = list(text="Probability of Death (%)")) |>
  hc_chart(style = list(fontFamily = "mono"))

Reflection:

The data set I have used is the death_prob dataset, which details the probability of death for males and females at the end of every year from ages 0 to 119. I first created my graph using ggplot2, and then I decided to add interactivity to the graph using highchart. I found that after the age of ~50, the probability of death starts to rise. After the age of ~80, the probability of death increases exponentially. Females seem to have a slightly lower probability of death.