#set document(title: "2.7 Box Plot Demo", author: "OpenStax") #set page(width: 8.5in, height: auto, margin: 1in) #import "@preview/cetz:0.5.2" #set text(font: ("STIX Two Text", "Libertinus Serif", "New Computer Modern"), size: 10.5pt, lang: "en") #show math.equation: set text(font: ("STIX Two Math", "New Computer Modern Math")) #set par(justify: true, leading: 0.62em, spacing: 0.9em) #set enum(spacing: 1.1em) // room between list items so tall inline fractions don't collide #set list(spacing: 1.1em) #set table(stroke: 0.5pt + rgb("#c7ccd3")) #let BLUE = rgb("#183B6F") // brand navy — section bars + example/solution labels (white on navy 11.09:1) #let ORANGE = rgb("#A94509") // brand primary-700 — AA-safe deep orange for TEXT (5.93:1 on white; raw brand #F37021 is 2.94:1 and must never carry text) #let RED = rgb("#DC2626") // brand error-600 #let GREEN = rgb("#059669") // brand success-600 (decoration only; small green text uses green-text #007942) #show heading.where(level: 1): it => block(width: 100%, above: 0pt, below: 16pt, fill: gradient.linear(BLUE, rgb("#2C5AA0")), inset: (x: 14pt, y: 12pt), radius: 3pt, text(fill: white, weight: "bold", size: 19pt, it.body)) #show heading.where(level: 2): it => block(width: 100%, above: 18pt, below: 10pt, fill: BLUE, inset: (x: 10pt, y: 6pt), radius: 2pt, text(fill: white, weight: "bold", size: 12pt, it.body)) #show heading.where(level: 3): it => text(fill: ORANGE, weight: "bold", size: 12.5pt, it.body) #show heading.where(level: 4): it => text(fill: BLUE, weight: "bold", size: 10.5pt, it.body) #let examplebox(label, title, body) = block(width: 100%, breakable: true, fill: rgb("#EFF1F5"), stroke: 0.5pt + rgb("#CFDDF0"), radius: 4pt, inset: 10pt, above: 12pt, below: 12pt)[ #block(below: 6pt)[#box(fill: BLUE, inset: (x: 6pt, y: 2pt), radius: 2pt, text(fill: white, weight: "bold", size: 8.5pt, label)) #h(0.4em) #strong[#title]] #body] // rail = decorative left rule (raw brand token); labelcolor = AA-safe label text shade #let notebox(label, rail, labelcolor, tint, body) = block(width: 100%, breakable: true, fill: tint, stroke: (left: 3pt + rail), inset: (left: 10pt, rest: 8pt), radius: (right: 4pt), above: 11pt, below: 11pt)[ #text(fill: labelcolor, weight: "bold", size: 7.5pt, tracking: 0.5pt)[#upper(label)] #linebreak() #body] #let solutionbox(body) = block(above: 4pt, below: 8pt)[ #text(fill: BLUE, weight: "bold", size: 8.5pt)[Solution] #linebreak() #body] #let figph(msg) = block(width: 100%, height: 60pt, fill: rgb("#f6f7f9"), stroke: (paint: rgb("#c7ccd3"), dash: "dashed"), radius: 4pt, inset: 10pt)[ #align(center + horizon, text(fill: rgb("#889"), style: "italic", size: 9pt, msg))] // Standardize inlined figure sizes: measure the natural CeTZ canvas, then scale to a // consistent envelope (aspect-aware; see build_typst.py FIG_* constants). Unlike the // print preamble, dimensions are FLOORED: in an editor a user can trim a figure to a // degenerate 1-D shape (a bare line), and w/h or tw/w would then divide by zero. #let _STD_W = 3.5 #let _WIDE_W = 5.6 #let _MAX_H = 3.4 #let _ASPECT_WIDE = 2.2 #let _UPSCALE_MAX = 1.15 #let stdfig(body) = context { let m = measure(body) let w = calc.max(m.width / 1in, 0.01) let h = calc.max(m.height / 1in, 0.01) let tw = if w / h > _ASPECT_WIDE { _WIDE_W } else { _STD_W } let s = calc.min(tw / w, _MAX_H / h, _UPSCALE_MAX) align(center, box(scale(x: s * 100%, y: s * 100%, reflow: true, body))) } #show figure: set block(breakable: false) #set figure(gap: 8pt) #show figure.caption: set text(size: 8.5pt, fill: rgb("#555")) == 2.7#h(0.6em)Box Plot Demo This section is an interactive demonstration. The live simulation runs on the original site: #link("https://onlinestatbook.com/2/graphing_distributions/boxplot_demo.html")[open the demonstration at onlinestatbook.com]. Learning Objectives + Understand what it means for a distribution to balance on a fulcrum + Learn which measure of central tendency will balance a distribution. #strong[Instructions] #linebreak() - The boxplot in the simulation is based on the data shown to the left of the boxplot. - Notice that various aspects of the boxplot such as the mean and median are labeled. - Beneath the data is a pair of buttons that let you specify whether you want to be able to enter data or to see statistics based on the data. - When you use the simulation, try to modify the data in various ways and see how it affects the boxplot (see Video Demo). - You can delete all the data (by pressing the "Clear All button") and enter your own data. - These labels can be hidden by unchecking the "show labels on boxplot" button. - Try putting in some extreme values and see if they get labeled as outliers. - Outside values are shown as "o's" beyond the inner fence. - Far out values are shown as \*'s outside the outer fence. - Your data can be typed in or pasted in from another application. - When pasting, use keyboard shortcut for pasting (Command-V for Mac, CTRL-V for Windows). - When you change the data, the boxplot will disappear. After you have entered new data, click the "Draw boxplot" button to redraw the boxplot. #strong[Illustrated Instructions] #linebreak() #linebreak() Video Demo #linebreak() The screenshot below shows the boxplot simulation with its default data on the left. #linebreak() #linebreak() #linebreak() You can change some or all of the data on the left by editing individual numbers or pasting in your own data. When pasting, you must use the keyboard shortcut for pasting (Command-V for Mac, CTRL-V for Windows. As you can see in the video, the boxplot disappears when you change the data. #linebreak() #strong[Video Demo] "Paint" the distributon with the mouse and observe the effects. The mean and median are shown to the left and also as small vertical bars below the X-axis. The mean is in blue and the median is in pink. #link("https://onlinestatbook.com/movies/graphing_distributions/boxplot_demo.mp4")[Watch the video demonstration (onlinestatbook.com)]