파머 펭귄

.csv 파일 (영어)

파머 펭귄 (영어)

데이터

데이터는 외부에서 .csv 파일등을 가져오는 방식이 대표적이다. 또다른 방식은 데이터 패키지 (bitData)에 내장된 데이터를 바로 가져오는 방식이다.

palmer-penguins.csv 로컬 디스크에 저장된 데이터를 가져와서 인터랙티브 시각화에 사용하는 경우 다음과 같이 FileAttachment() 함수를 사용한다.

data = FileAttachment("../data/palmer-penguins.csv").csv({ typed: true })
data = Array(344) [Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, …]

UI에서 입력값을 선택하면서 시각화하는 데이터가 달라지기 때문에 이를 반영하여 인터랙티브 대상 시각화 데이터를 제작한다.

filtered = data.filter(function(penguin) {
  return bill_length_min < penguin.bill_length_mm &&
         islands.includes(penguin.island);
})
filtered = Array(210) [Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, …]

UI

인터랙티브 데이터 시각화를 위해서 UI 입력부분을 정의한다. 먼저 슬라이더 입력값(Input.range()) 과 체크박스 입력값(Inputs.checkbox())을 넣어둔다.

viewof bill_length_min = Inputs.range(
  [32, 50], 
  {value: 35, step: 1, label: "Bill length (min):"}
)
viewof islands = Inputs.checkbox(
  ["Torgersen", "Biscoe", "Dream"], 
  { value: ["Torgersen", "Biscoe"], 
    label: "Islands:"
  }
)
bill_length_min = 35
islands = Array(2) ["Torgersen", "Biscoe"]

인터랙티브 그래프

인터랙티브 데이터를 선택한 결과를 실시간 데이터와 그래프로 시각화하여 문서에 담아낸다.

Plot.rectY(filtered, 
  Plot.binX(
    {y: "count"}, 
    {x: "body_mass_g", fill: "species", thresholds: 20}
  ))
  .plot({
    facet: {
      data: filtered,
      x: "sex",
      y: "species",
      marginRight: 80
    },
    marks: [
      Plot.frame(),
    ]
  }
)
AdelieGentoospeciesNAfemalemalesex051015↑ Frequency0510154,0006,0004,0006,0004,0006,000body_mass_g →
Inputs.table(filtered)
rowidspeciesislandbill_length_mmbill_depth_mmflipper_length_mmbody_mass_gsexyear
1AdelieTorgersen39.118.71813,750male2,007
2AdelieTorgersen39.517.41863,800female2,007
3AdelieTorgersen40.3181953,250female2,007
5AdelieTorgersen36.719.31933,450female2,007
6AdelieTorgersen39.320.61903,650male2,007
7AdelieTorgersen38.917.81813,625female2,007
8AdelieTorgersen39.219.61954,675male2,007
10AdelieTorgersen4220.21904,250NA2,007
11AdelieTorgersen37.817.11863,300NA2,007
12AdelieTorgersen37.817.31803,700NA2,007
13AdelieTorgersen41.117.61823,200female2,007
14AdelieTorgersen38.621.21913,800male2,007
16AdelieTorgersen36.617.81853,700female2,007
17AdelieTorgersen38.7191953,450female2,007
18AdelieTorgersen42.520.71974,500male2,007
20AdelieTorgersen4621.51944,200male2,007
21AdelieBiscoe37.818.31743,400female2,007
22AdelieBiscoe37.718.71803,600male2,007
23AdelieBiscoe35.919.21893,800female2,007
24AdelieBiscoe38.218.11853,950male2,007
25AdelieBiscoe38.817.21803,800male2,007
26AdelieBiscoe35.318.91873,800female2,007
27AdelieBiscoe40.618.61833,550male2,007

참고자료

Quarto 인터랙티브 문서 제작 사례로 Penguins 웹사이트에서 자세한 사항 확인할 수 있습니다.