자료와 배경

나이팅게일(Florence Nightingale, 1820-1910)은 크림전쟁(1854-1856) 당시 38명의 잉글랜드 성공회 수녀들의 도움을 받으며 슈코더르(Scutari)의 야전 병원에서 유능한 보건행정가로서의 역량을 발휘하여 병원에서 쓰는 물건을 세심하고 관리하고 무질서한 병원에 규율을 세웠다. 환자의 사망율을 42%에서 2%로 낮추고 집중치료실(ICU)을 설치하여 상태가 중한 환자를 격리하여 집중관리하는 등 근대적인 간호체계를 수립하는 데 기여하였다. 관료주의에 물든 군의 관리들을 설득하기 위하여 사용한 다음 도표는 Rose Diagram, 혹은 Coxcomb plot 등으로 불린다.

데이터

library(knitr)
library(HistData)
library(tidyverse)
library(magrittr)
library(grid)
library(gridExtra)
kable(Nightingale)
Date Month Year Army Disease Wounds Other Disease.rate Wounds.rate Other.rate
1854-04-01 Apr 1854 8571 1 0 5 1.4 0.0 7.0
1854-05-01 May 1854 23333 12 0 9 6.2 0.0 4.6
1854-06-01 Jun 1854 28333 11 0 6 4.7 0.0 2.5
1854-07-01 Jul 1854 28722 359 0 23 150.0 0.0 9.6
1854-08-01 Aug 1854 30246 828 1 30 328.5 0.4 11.9
1854-09-01 Sep 1854 30290 788 81 70 312.2 32.1 27.7
1854-10-01 Oct 1854 30643 503 132 128 197.0 51.7 50.1
1854-11-01 Nov 1854 29736 844 287 106 340.6 115.8 42.8
1854-12-01 Dec 1854 32779 1725 114 131 631.5 41.7 48.0
1855-01-01 Jan 1855 32393 2761 83 324 1022.8 30.7 120.0
1855-02-01 Feb 1855 30919 2120 42 361 822.8 16.3 140.1
1855-03-01 Mar 1855 30107 1205 32 172 480.3 12.8 68.6
1855-04-01 Apr 1855 32252 477 48 57 177.5 17.9 21.2
1855-05-01 May 1855 35473 508 49 37 171.8 16.6 12.5
1855-06-01 Jun 1855 38863 802 209 31 247.6 64.5 9.6
1855-07-01 Jul 1855 42647 382 134 33 107.5 37.7 9.3
1855-08-01 Aug 1855 44614 483 164 25 129.9 44.1 6.7
1855-09-01 Sep 1855 47751 189 276 20 47.5 69.4 5.0
1855-10-01 Oct 1855 46852 128 53 18 32.8 13.6 4.6
1855-11-01 Nov 1855 37853 178 33 32 56.4 10.5 10.1
1855-12-01 Dec 1855 43217 91 18 28 25.3 5.0 7.8
1856-01-01 Jan 1856 44212 42 2 48 11.4 0.5 13.0
1856-02-01 Feb 1856 43485 24 0 19 6.6 0.0 5.2
1856-03-01 Mar 1856 46140 15 0 35 3.9 0.0 9.1
Night <- Nightingale %>%
  as_tibble %>%
  subset(select = c(1, 8:10))
kable(Night)
Date Disease.rate Wounds.rate Other.rate
1854-04-01 1.4 0.0 7.0
1854-05-01 6.2 0.0 4.6
1854-06-01 4.7 0.0 2.5
1854-07-01 150.0 0.0 9.6
1854-08-01 328.5 0.4 11.9
1854-09-01 312.2 32.1 27.7
1854-10-01 197.0 51.7 50.1
1854-11-01 340.6 115.8 42.8
1854-12-01 631.5 41.7 48.0
1855-01-01 1022.8 30.7 120.0
1855-02-01 822.8 16.3 140.1
1855-03-01 480.3 12.8 68.6
1855-04-01 177.5 17.9 21.2
1855-05-01 171.8 16.6 12.5
1855-06-01 247.6 64.5 9.6
1855-07-01 107.5 37.7 9.3
1855-08-01 129.9 44.1 6.7
1855-09-01 47.5 69.4 5.0
1855-10-01 32.8 13.6 4.6
1855-11-01 56.4 10.5 10.1
1855-12-01 25.3 5.0 7.8
1856-01-01 11.4 0.5 13.0
1856-02-01 6.6 0.0 5.2
1856-03-01 3.9 0.0 9.1
Night %<>%
  gather(key = "Cause", value = "Deaths", -Date) %>%
  mutate(Month = gl(12, 1, 72, labels = month.name[c(4:12, 1:3)])) %>%
  mutate(Regime = gl(2, 12, 72, labels = c("Before", "After"), ordered = TRUE)) 
kable(Night)
Date Cause Deaths Month Regime
1854-04-01 Disease.rate 1.4 April Before
1854-05-01 Disease.rate 6.2 May Before
1854-06-01 Disease.rate 4.7 June Before
1854-07-01 Disease.rate 150.0 July Before
1854-08-01 Disease.rate 328.5 August Before
1854-09-01 Disease.rate 312.2 September Before
1854-10-01 Disease.rate 197.0 October Before
1854-11-01 Disease.rate 340.6 November Before
1854-12-01 Disease.rate 631.5 December Before
1855-01-01 Disease.rate 1022.8 January Before
1855-02-01 Disease.rate 822.8 February Before
1855-03-01 Disease.rate 480.3 March Before
1855-04-01 Disease.rate 177.5 April After
1855-05-01 Disease.rate 171.8 May After
1855-06-01 Disease.rate 247.6 June After
1855-07-01 Disease.rate 107.5 July After
1855-08-01 Disease.rate 129.9 August After
1855-09-01 Disease.rate 47.5 September After
1855-10-01 Disease.rate 32.8 October After
1855-11-01 Disease.rate 56.4 November After
1855-12-01 Disease.rate 25.3 December After
1856-01-01 Disease.rate 11.4 January After
1856-02-01 Disease.rate 6.6 February After
1856-03-01 Disease.rate 3.9 March After
1854-04-01 Wounds.rate 0.0 April Before
1854-05-01 Wounds.rate 0.0 May Before
1854-06-01 Wounds.rate 0.0 June Before
1854-07-01 Wounds.rate 0.0 July Before
1854-08-01 Wounds.rate 0.4 August Before
1854-09-01 Wounds.rate 32.1 September Before
1854-10-01 Wounds.rate 51.7 October Before
1854-11-01 Wounds.rate 115.8 November Before
1854-12-01 Wounds.rate 41.7 December Before
1855-01-01 Wounds.rate 30.7 January Before
1855-02-01 Wounds.rate 16.3 February Before
1855-03-01 Wounds.rate 12.8 March Before
1855-04-01 Wounds.rate 17.9 April After
1855-05-01 Wounds.rate 16.6 May After
1855-06-01 Wounds.rate 64.5 June After
1855-07-01 Wounds.rate 37.7 July After
1855-08-01 Wounds.rate 44.1 August After
1855-09-01 Wounds.rate 69.4 September After
1855-10-01 Wounds.rate 13.6 October After
1855-11-01 Wounds.rate 10.5 November After
1855-12-01 Wounds.rate 5.0 December After
1856-01-01 Wounds.rate 0.5 January After
1856-02-01 Wounds.rate 0.0 February After
1856-03-01 Wounds.rate 0.0 March After
1854-04-01 Other.rate 7.0 April Before
1854-05-01 Other.rate 4.6 May Before
1854-06-01 Other.rate 2.5 June Before
1854-07-01 Other.rate 9.6 July Before
1854-08-01 Other.rate 11.9 August Before
1854-09-01 Other.rate 27.7 September Before
1854-10-01 Other.rate 50.1 October Before
1854-11-01 Other.rate 42.8 November Before
1854-12-01 Other.rate 48.0 December Before
1855-01-01 Other.rate 120.0 January Before
1855-02-01 Other.rate 140.1 February Before
1855-03-01 Other.rate 68.6 March Before
1855-04-01 Other.rate 21.2 April After
1855-05-01 Other.rate 12.5 May After
1855-06-01 Other.rate 9.6 June After
1855-07-01 Other.rate 9.3 July After
1855-08-01 Other.rate 6.7 August After
1855-09-01 Other.rate 5.0 September After
1855-10-01 Other.rate 4.6 October After
1855-11-01 Other.rate 10.1 November After
1855-12-01 Other.rate 7.8 December After
1856-01-01 Other.rate 13.0 January After
1856-02-01 Other.rate 5.2 February After
1856-03-01 Other.rate 9.1 March After
str(Night)
## Classes 'tbl_df', 'tbl' and 'data.frame':    72 obs. of  5 variables:
##  $ Date  : Date, format: "1854-04-01" "1854-05-01" ...
##  $ Cause : chr  "Disease.rate" "Disease.rate" "Disease.rate" "Disease.rate" ...
##  $ Deaths: num  1.4 6.2 4.7 150 328.5 ...
##  $ Month : Factor w/ 12 levels "April","May",..: 1 2 3 4 5 6 7 8 9 10 ...
##  $ Regime: Ord.factor w/ 2 levels "Before"<"After": 1 1 1 1 1 1 1 1 1 1 ...
Night$Cause %<>% 
  sub("\\.rate", "", .)
Night$Cause %<>% 
  factor(levels = c("Disease", "Wounds", "Other"))
Night %>%
  kable(align = c("c", "c", "r", "c", "c"))
Date Cause Deaths Month Regime
1854-04-01 Disease 1.4 April Before
1854-05-01 Disease 6.2 May Before
1854-06-01 Disease 4.7 June Before
1854-07-01 Disease 150.0 July Before
1854-08-01 Disease 328.5 August Before
1854-09-01 Disease 312.2 September Before
1854-10-01 Disease 197.0 October Before
1854-11-01 Disease 340.6 November Before
1854-12-01 Disease 631.5 December Before
1855-01-01 Disease 1022.8 January Before
1855-02-01 Disease 822.8 February Before
1855-03-01 Disease 480.3 March Before
1855-04-01 Disease 177.5 April After
1855-05-01 Disease 171.8 May After
1855-06-01 Disease 247.6 June After
1855-07-01 Disease 107.5 July After
1855-08-01 Disease 129.9 August After
1855-09-01 Disease 47.5 September After
1855-10-01 Disease 32.8 October After
1855-11-01 Disease 56.4 November After
1855-12-01 Disease 25.3 December After
1856-01-01 Disease 11.4 January After
1856-02-01 Disease 6.6 February After
1856-03-01 Disease 3.9 March After
1854-04-01 Wounds 0.0 April Before
1854-05-01 Wounds 0.0 May Before
1854-06-01 Wounds 0.0 June Before
1854-07-01 Wounds 0.0 July Before
1854-08-01 Wounds 0.4 August Before
1854-09-01 Wounds 32.1 September Before
1854-10-01 Wounds 51.7 October Before
1854-11-01 Wounds 115.8 November Before
1854-12-01 Wounds 41.7 December Before
1855-01-01 Wounds 30.7 January Before
1855-02-01 Wounds 16.3 February Before
1855-03-01 Wounds 12.8 March Before
1855-04-01 Wounds 17.9 April After
1855-05-01 Wounds 16.6 May After
1855-06-01 Wounds 64.5 June After
1855-07-01 Wounds 37.7 July After
1855-08-01 Wounds 44.1 August After
1855-09-01 Wounds 69.4 September After
1855-10-01 Wounds 13.6 October After
1855-11-01 Wounds 10.5 November After
1855-12-01 Wounds 5.0 December After
1856-01-01 Wounds 0.5 January After
1856-02-01 Wounds 0.0 February After
1856-03-01 Wounds 0.0 March After
1854-04-01 Other 7.0 April Before
1854-05-01 Other 4.6 May Before
1854-06-01 Other 2.5 June Before
1854-07-01 Other 9.6 July Before
1854-08-01 Other 11.9 August Before
1854-09-01 Other 27.7 September Before
1854-10-01 Other 50.1 October Before
1854-11-01 Other 42.8 November Before
1854-12-01 Other 48.0 December Before
1855-01-01 Other 120.0 January Before
1855-02-01 Other 140.1 February Before
1855-03-01 Other 68.6 March Before
1855-04-01 Other 21.2 April After
1855-05-01 Other 12.5 May After
1855-06-01 Other 9.6 June After
1855-07-01 Other 9.3 July After
1855-08-01 Other 6.7 August After
1855-09-01 Other 5.0 September After
1855-10-01 Other 4.6 October After
1855-11-01 Other 10.1 November After
1855-12-01 Other 7.8 December After
1856-01-01 Other 13.0 January After
1856-02-01 Other 5.2 February After
1856-03-01 Other 9.1 March After

Plot

barplot

cxc_b <- ggplot(data = Night,
              aes(x = factor(Date), y = Deaths, fill = Cause)) +
  geom_bar(width = 0.8, stat = "identity", position = "stack", colour = "black") +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  theme(legend.position = c(0.8, 0.8)) +
  scale_fill_brewer(type = "qual", palette = "Pastel1")
cxc_b

Coxcomb Plot

cxc1 <- ggplot(data = Night %>% subset(Regime == "Before"),
               aes(x = Month, y = Deaths, fill = Cause)) +
  geom_bar(width = 1, stat = "identity", position = "stack", colour = "black") +
  scale_y_sqrt() +
  coord_polar(start = 3 * pi / 2)
cxc1

cxc2 <- ggplot(data = Night %>% subset(Regime == "After"),
               aes(x = Month, y = Deaths, fill = Cause)) +
  geom_bar(width = 1, stat = "identity", position = "stack", colour = "black") +
  scale_y_sqrt() +
  coord_polar(start = 3 * pi / 2)
cxc2

facet

Regime_lab <- c("Before", "After")
names(Regime_lab) <- c("Before", "After")
cxc_f <- ggplot(data = Night,
                aes(x = Month, y = Deaths, fill = Cause)) +
  geom_bar(width = 1, stat = "identity", position = "stack", colour = "black") +
  scale_y_sqrt() +
  scale_fill_brewer(type = "qual", palette = "Pastel2") +
  facet_grid(. ~ Regime, scales = "fixed", labeller = labeller(Regime = Regime_lab)) +
  coord_polar(start = 3 * pi / 2)
cxc_f