#set document(title: "2.9 Line Graphs", 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.9#h(0.6em)Line Graphs #notebox("Note", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ #emph[Prerequisites] Bar Graphs #linebreak() #linebreak() ] #notebox("Note", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ #emph[Learning Objectives] + Create and interpret line graphs + Judge whether a line graph would be appropriate for a given data set ] A line graph is a bar graph with the tops of the bars represented by points joined by lines (the rest of the bar is suppressed). For example, Figure 1 was presented in the section on bar charts and shows changes in the Consumer Price Index (CPI) over time. #figure(figph[Bar chart of CPI percent increase for July 2000 (3.8), October 2000 (2.8), January 2001 (4.2), and April 2001 (2.5).], alt: "Bar chart of CPI percent increase for July 2000 (3.8), October 2000 (2.8), January 2001 (4.2), and April 2001 (2.5).", caption: [Figure 1. A bar chart of the percent change in the CPI over time. Each bar represents percent increase for the three months ending at the date indicated.]) A line graph of these same data is shown in Figure 2. Although the figures are similar, the line graph emphasizes the change from period to period. #figure(figph[Line graph of the same CPI percent increases connected across the four quarters: 3.8, 2.8, 4.2, 2.5 — the rises and falls are easier to see than in the bar version.], alt: "Line graph of the same CPI percent increases connected across the four quarters: 3.8, 2.8, 4.2, 2.5 — the rises and falls are easier to see than in the bar version.", caption: [Figure 2. A line graph of the percent change in the CPI over time. Each point represents percent increase for the three months ending at the date indicated.]) Line graphs are appropriate only when both the X- and Y-axes display ordered (rather than qualitative) variables. Although bar graphs can also be used in this situation, line graphs are generally better at comparing changes over time. Figure 3, for example, shows percent increases and decreases in five components of the Consumer Price Index (CPI). The figure makes it easy to see that medical costs had a steadier progression than the other components. Although you could create an analogous bar chart, its interpretation would not be as easy. #figure(figph[Line graph of CPI percent increase for five components across four quarters (July 2000 to April 2001): Housing spikes to 6.7 in January 2001 then drops to 2.1; Medical Care rises steadily from about 4.2 to 5.3; Food and Beverage dips to 2.4 then recovers to 3.6; Recreation falls to 0.8 before climbing to 3.5; Transportation drops to 0 in October 2000, rises to 2.3, then ends at 1.6.], alt: "Line graph of CPI percent increase for five components across four quarters (July 2000 to April 2001): Housing spikes to 6.7 in January 2001 then drops to 2.1; Medical Care rises steadily from about 4.2 to 5.3; Food and Beverage dips to 2.4 then recovers to 3.6; Recreation falls to 0.8 before climbing to 3.5; Transportation drops to 0 in October 2000, rises to 2.3, then ends at 1.6.", caption: [Figure 3. A line graph of the percent change in five components of the CPI over time.]) Let us stress that it is misleading to use a line graph when the X-axis contains merely qualitative variables. Figure 4 inappropriately shows a line graph of the card game data from Yahoo, discussed in the section on qualitative variables. The defect in Figure 4 is that it gives the false impression that the games are naturally ordered in a numerical way. #figure(figph[Line graph incorrectly connecting the ten card games on the x-axis: number of players on Wednesday and Sunday drawn as two lines from Poker (about 700) up to Spades (about 7,100). The categories have no order, so the connecting lines are meaningless — an example of misusing a line graph.], alt: "Line graph incorrectly connecting the ten card games on the x-axis: number of players on Wednesday and Sunday drawn as two lines from Poker (about 700) up to Spades (about 7,100). The categories have no order, so the connecting lines are meaningless — an example of misusing a line graph.", caption: [Figure 4. A line graph, inappropriately used, depicting the number of people playing different card games on Sunday and Wednesday.]) Note that the graphs on this page were not created in R. However, the R code shown here produces a very similar graph. \# Figure 3 food=c(4.1,2.4,2.6,3.6) housing=c(4.9,4.3,6.7,2.1) medical = c(4.2,4.5,4.8,5.3) rec = c(3.3,0.8,1.2,3.5) tran = c(4.8,0,2.3,1.6) plot(housing, type="o", xaxt="none",col="purple", xlab="Date", ylab="CPI % Increase",ylim=c(0,7)) lines(food,type="o",col="blue") lines(medical,type="o",col="green") lines(rec,type="o",col="red") lines(tran,type="o",col="black") legend("topleft", legend=c("housing","food","medical","recreation","transportation"), col=c("blue","violet","green","red","black"), lty=1,lwd=2) axis(1, at=1:4, lab=c("July 2000", "October 2000", "January 2001","April 2001"))