# การแสดงความสัมพันธ์: เรื่องราวของน้ำผึ้ง 🍯 |![ สเก็ตโน้ตโดย [(@sketchthedocs)](https://sketchthedocs.dev) ](../../../sketchnotes/12-Visualizing-Relationships.png)| |:---:| |การแสดงความสัมพันธ์ - _สเก็ตโน้ตโดย [@nitya](https://twitter.com/nitya)_ | ต่อเนื่องจากการวิจัยที่เน้นธรรมชาติ มาค้นพบวิธีการแสดงภาพที่น่าสนใจเพื่อแสดงความสัมพันธ์ระหว่างน้ำผึ้งประเภทต่าง ๆ โดยอ้างอิงจากชุดข้อมูลที่ได้มาจาก [กระทรวงเกษตรแห่งสหรัฐอเมริกา](https://www.nass.usda.gov/About_NASS/index.php) ชุดข้อมูลนี้มีประมาณ 600 รายการ แสดงการผลิตน้ำผึ้งในหลายรัฐของสหรัฐฯ ตัวอย่างเช่น คุณสามารถดูจำนวนรังผึ้ง ผลผลิตต่อรัง การผลิตรวม สต็อก ราคาเฉลี่ยต่อปอนด์ และมูลค่าของน้ำผึ้งที่ผลิตในแต่ละรัฐตั้งแต่ปี 1998-2012 โดยมีหนึ่งแถวต่อปีสำหรับแต่ละรัฐ จะน่าสนใจมากหากแสดงภาพความสัมพันธ์ระหว่างการผลิตน้ำผึ้งในแต่ละปีของรัฐหนึ่ง ๆ กับราคาน้ำผึ้งในรัฐนั้น หรืออาจแสดงความสัมพันธ์ระหว่างผลผลิตน้ำผึ้งต่อรังในแต่ละรัฐ ช่วงเวลานี้ครอบคลุมเหตุการณ์ 'CCD' หรือ 'Colony Collapse Disorder' ที่เริ่มปรากฏในปี 2006 (http://npic.orst.edu/envir/ccd.html) ซึ่งเป็นชุดข้อมูลที่น่าศึกษาอย่างยิ่ง 🐝 ## [แบบทดสอบก่อนเรียน](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/22) ในบทเรียนนี้ คุณสามารถใช้ ggplot2 ซึ่งคุณเคยใช้มาก่อน เป็นไลบรารีที่ดีในการแสดงภาพความสัมพันธ์ระหว่างตัวแปร โดยเฉพาะการใช้ `geom_point` และฟังก์ชัน `qplot` ของ ggplot2 ที่ช่วยให้สร้าง scatter plots และ line plots เพื่อแสดง '[ความสัมพันธ์ทางสถิติ](https://ggplot2.tidyverse.org/)' ได้อย่างรวดเร็ว ซึ่งช่วยให้นักวิทยาศาสตร์ข้อมูลเข้าใจความสัมพันธ์ระหว่างตัวแปรได้ดียิ่งขึ้น ## Scatterplots ใช้ scatterplot เพื่อแสดงให้เห็นว่าราคาน้ำผึ้งเปลี่ยนแปลงไปอย่างไรในแต่ละปีในแต่ละรัฐ ggplot2 โดยใช้ `ggplot` และ `geom_point` สามารถจัดกลุ่มข้อมูลของรัฐและแสดงจุดข้อมูลสำหรับข้อมูลเชิงหมวดหมู่และข้อมูลเชิงตัวเลขได้อย่างสะดวก เริ่มต้นด้วยการนำเข้าข้อมูลและ Seaborn: ```r honey=read.csv('../../data/honey.csv') head(honey) ``` คุณจะสังเกตเห็นว่าข้อมูลน้ำผึ้งมีคอลัมน์ที่น่าสนใจหลายคอลัมน์ รวมถึงปีและราคาต่อปอนด์ ลองสำรวจข้อมูลนี้โดยจัดกลุ่มตามรัฐในสหรัฐฯ: | state | numcol | yieldpercol | totalprod | stocks | priceperlb | prodvalue | year | | ----- | ------ | ----------- | --------- | -------- | ---------- | --------- | ---- | | AL | 16000 | 71 | 1136000 | 159000 | 0.72 | 818000 | 1998 | | AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 | | AR | 53000 | 65 | 3445000 | 1688000 | 0.59 | 2033000 | 1998 | | CA | 450000 | 83 | 37350000 | 12326000 | 0.62 | 23157000 | 1998 | | CO | 27000 | 72 | 1944000 | 1594000 | 0.7 | 1361000 | 1998 | | FL | 230000 | 98 |22540000 | 4508000 | 0.64 | 14426000 | 1998 | สร้าง scatterplot พื้นฐานเพื่อแสดงความสัมพันธ์ระหว่างราคาต่อปอนด์ของน้ำผึ้งกับรัฐที่ผลิตน้ำผึ้ง ตั้งค่าแกน `y` ให้สูงพอที่จะแสดงข้อมูลของทุกรัฐ: ```r library(ggplot2) ggplot(honey, aes(x = priceperlb, y = state)) + geom_point(colour = "blue") ``` ![scatterplot 1](../../../../../translated_images/scatter1.86b8900674d88b26dd3353a83fe604e9ab3722c4680cc40ee9beb452ff02cdea.th.png) ตอนนี้ แสดงข้อมูลเดียวกันด้วยโทนสีของน้ำผึ้งเพื่อแสดงให้เห็นว่าราคาเปลี่ยนแปลงไปอย่างไรในแต่ละปี คุณสามารถทำได้โดยเพิ่มพารามิเตอร์ 'scale_color_gradientn' เพื่อแสดงการเปลี่ยนแปลงในแต่ละปี: > ✅ เรียนรู้เพิ่มเติมเกี่ยวกับ [scale_color_gradientn](https://www.rdocumentation.org/packages/ggplot2/versions/0.9.1/topics/scale_colour_gradientn) - ลองใช้โทนสีรุ้งที่สวยงาม! ```r ggplot(honey, aes(x = priceperlb, y = state, color=year)) + geom_point()+scale_color_gradientn(colours = colorspace::heat_hcl(7)) ``` ![scatterplot 2](../../../../../translated_images/scatter2.4d1cbc693bad20e2b563888747eb6bdf65b73ce449d903f7cd4068a78502dcff.th.png) ด้วยการเปลี่ยนโทนสีนี้ คุณจะเห็นได้ชัดเจนว่ามีการเปลี่ยนแปลงอย่างต่อเนื่องในราคาน้ำผึ้งต่อปอนด์ในแต่ละปี หากคุณดูตัวอย่างข้อมูลในชุดข้อมูลเพื่อยืนยัน (เลือกดูรัฐหนึ่ง เช่น รัฐแอริโซนา) คุณจะเห็นรูปแบบการเพิ่มขึ้นของราคาปีต่อปี โดยมีข้อยกเว้นบางประการ: | state | numcol | yieldpercol | totalprod | stocks | priceperlb | prodvalue | year | | ----- | ------ | ----------- | --------- | ------- | ---------- | --------- | ---- | | AZ | 55000 | 60 | 3300000 | 1485000 | 0.64 | 2112000 | 1998 | | AZ | 52000 | 62 | 3224000 | 1548000 | 0.62 | 1999000 | 1999 | | AZ | 40000 | 59 | 2360000 | 1322000 | 0.73 | 1723000 | 2000 | | AZ | 43000 | 59 | 2537000 | 1142000 | 0.72 | 1827000 | 2001 | | AZ | 38000 | 63 | 2394000 | 1197000 | 1.08 | 2586000 | 2002 | | AZ | 35000 | 72 | 2520000 | 983000 | 1.34 | 3377000 | 2003 | | AZ | 32000 | 55 | 1760000 | 774000 | 1.11 | 1954000 | 2004 | | AZ | 36000 | 50 | 1800000 | 720000 | 1.04 | 1872000 | 2005 | | AZ | 30000 | 65 | 1950000 | 839000 | 0.91 | 1775000 | 2006 | | AZ | 30000 | 64 | 1920000 | 902000 | 1.26 | 2419000 | 2007 | | AZ | 25000 | 64 | 1600000 | 336000 | 1.26 | 2016000 | 2008 | | AZ | 20000 | 52 | 1040000 | 562000 | 1.45 | 1508000 | 2009 | | AZ | 24000 | 77 | 1848000 | 665000 | 1.52 | 2809000 | 2010 | | AZ | 23000 | 53 | 1219000 | 427000 | 1.55 | 1889000 | 2011 | | AZ | 22000 | 46 | 1012000 | 253000 | 1.79 | 1811000 | 2012 | อีกวิธีหนึ่งในการแสดงการเปลี่ยนแปลงนี้คือการใช้ขนาดแทนสี สำหรับผู้ใช้ที่มีปัญหาด้านการมองเห็นสี วิธีนี้อาจเป็นตัวเลือกที่ดีกว่า แก้ไขการแสดงภาพของคุณเพื่อแสดงการเพิ่มขึ้นของราคาด้วยการเพิ่มขนาดของจุด: ```r ggplot(honey, aes(x = priceperlb, y = state)) + geom_point(aes(size = year),colour = "blue") + scale_size_continuous(range = c(0.25, 3)) ``` คุณจะเห็นว่าขนาดของจุดเพิ่มขึ้นเรื่อย ๆ ![scatterplot 3](../../../../../translated_images/scatter3.722d21e6f20b3ea2e18339bb9b10d75906126715eb7d5fdc88fe74dcb6d7066a.th.png) นี่เป็นกรณีง่าย ๆ ของอุปสงค์และอุปทานหรือไม่? เนื่องจากปัจจัยต่าง ๆ เช่น การเปลี่ยนแปลงสภาพภูมิอากาศและการล่มสลายของรังผึ้ง มีน้ำผึ้งน้อยลงสำหรับการซื้อในแต่ละปี และทำให้ราคาสูงขึ้น? เพื่อค้นหาความสัมพันธ์ระหว่างตัวแปรบางตัวในชุดข้อมูลนี้ ลองสำรวจกราฟเส้น ## กราฟเส้น คำถาม: มีการเพิ่มขึ้นของราคาน้ำผึ้งต่อปอนด์ในแต่ละปีอย่างชัดเจนหรือไม่? คุณสามารถค้นพบได้ง่ายที่สุดโดยการสร้างกราฟเส้นเดี่ยว: ```r qplot(honey$year,honey$priceperlb, geom='smooth', span =0.5, xlab = "year",ylab = "priceperlb") ``` คำตอบ: ใช่ โดยมีข้อยกเว้นบางประการในปี 2003: ![line chart 1](../../../../../translated_images/line1.299b576fbb2a59e60a59e7130030f59836891f90302be084e4e8d14da0562e2a.th.png) คำถาม: ในปี 2003 เราเห็นการเพิ่มขึ้นของปริมาณน้ำผึ้งหรือไม่? หากคุณดูการผลิตรวมในแต่ละปีล่ะ? ```python qplot(honey$year,honey$totalprod, geom='smooth', span =0.5, xlab = "year",ylab = "totalprod") ``` ![line chart 2](../../../../../translated_images/line2.3b18fcda7176ceba5b6689eaaabb817d49c965e986f11cac1ae3f424030c34d8.th.png) คำตอบ: ไม่จริง หากคุณดูการผลิตรวม ดูเหมือนว่าจะเพิ่มขึ้นในปีนั้น แต่โดยทั่วไปแล้วปริมาณน้ำผึ้งที่ผลิตลดลงในช่วงปีเหล่านี้ คำถาม: ในกรณีนั้น อะไรที่อาจทำให้เกิดการเพิ่มขึ้นของราคาน้ำผึ้งในปี 2003? เพื่อค้นหาสิ่งนี้ คุณสามารถสำรวจ facet grid ## Facet grids Facet grids ใช้หนึ่ง facet ของชุดข้อมูลของคุณ (ในกรณีนี้ คุณสามารถเลือก 'ปี' เพื่อหลีกเลี่ยงการสร้าง facet มากเกินไป) Seaborn สามารถสร้างกราฟสำหรับแต่ละ facet ของพิกัด x และ y ที่คุณเลือกเพื่อการเปรียบเทียบที่ง่ายขึ้น ปี 2003 โดดเด่นในประเภทการเปรียบเทียบนี้หรือไม่? สร้าง facet grid โดยใช้ `facet_wrap` ตามที่ [เอกสาร ggplot2](https://ggplot2.tidyverse.org/reference/facet_wrap.html) แนะนำ ```r ggplot(honey, aes(x=yieldpercol, y = numcol,group = 1)) + geom_line() + facet_wrap(vars(year)) ``` ในภาพนี้ คุณสามารถเปรียบเทียบผลผลิตต่อรังและจำนวนรังในแต่ละปี โดยจัดเรียง wrap เป็น 3 คอลัมน์: ![facet grid](../../../../../translated_images/facet.491ad90d61c2a7cc69b50c929f80786c749e38217ccedbf1e22ed8909b65987c.th.png) สำหรับชุดข้อมูลนี้ ไม่มีสิ่งใดที่โดดเด่นเกี่ยวกับจำนวนรังและผลผลิตของรังในแต่ละปีและแต่ละรัฐ มีวิธีอื่นในการค้นหาความสัมพันธ์ระหว่างตัวแปรสองตัวนี้หรือไม่? ## กราฟเส้นคู่ ลองใช้กราฟเส้นหลายเส้นโดยซ้อนกราฟเส้นสองกราฟเข้าด้วยกัน โดยใช้ฟังก์ชัน `par` และ `plot` ของ R เราจะวางปีไว้บนแกน x และแสดงแกน y สองแกน โดยแสดงผลผลิตต่อรังและจำนวนรังที่ซ้อนกัน: ```r par(mar = c(5, 4, 4, 4) + 0.3) plot(honey$year, honey$numcol, pch = 16, col = 2,type="l") par(new = TRUE) plot(honey$year, honey$yieldpercol, pch = 17, col = 3, axes = FALSE, xlab = "", ylab = "",type="l") axis(side = 4, at = pretty(range(y2))) mtext("colony yield", side = 4, line = 3) ``` ![superimposed plots](../../../../../translated_images/dual-line.fc4665f360a54018d7df9bc6abcc26460112e17dcbda18d3b9ae6109b32b36c3.th.png) แม้ว่าไม่มีสิ่งใดที่โดดเด่นในปี 2003 แต่ก็ช่วยให้เราจบบทเรียนนี้ด้วยข่าวดีเล็กน้อย: แม้ว่าจำนวนรังจะลดลงโดยรวม แต่จำนวนรังก็เริ่มคงที่ แม้ว่าผลผลิตต่อรังจะลดลง สู้ต่อไปนะ ผึ้งน้อย! 🐝❤️ ## 🚀 ความท้าทาย ในบทเรียนนี้ คุณได้เรียนรู้เพิ่มเติมเกี่ยวกับการใช้ scatterplots และ line grids รวมถึง facet grids ท้าทายตัวเองด้วยการสร้าง facet grid โดยใช้ชุดข้อมูลอื่น อาจเป็นชุดข้อมูลที่คุณเคยใช้ก่อนหน้านี้ในบทเรียนเหล่านี้ สังเกตว่าต้องใช้เวลานานแค่ไหนในการสร้าง และคุณต้องระมัดระวังเกี่ยวกับจำนวน grids ที่คุณต้องสร้างด้วยเทคนิคเหล่านี้ ## [แบบทดสอบหลังเรียน](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/23) ## ทบทวนและศึกษาด้วยตนเอง กราฟเส้นสามารถเรียบง่ายหรือซับซ้อนได้ ลองอ่านเพิ่มเติมใน [เอกสาร ggplot2](https://ggplot2.tidyverse.org/reference/geom_path.html#:~:text=geom_line()%20connects%20them%20in,which%20cases%20are%20connected%20together) เกี่ยวกับวิธีต่าง ๆ ที่คุณสามารถสร้างกราฟเส้น ลองปรับปรุงกราฟเส้นที่คุณสร้างในบทเรียนนี้ด้วยวิธีอื่น ๆ ที่ระบุไว้ในเอกสาร ## งานที่ได้รับมอบหมาย [สำรวจรังผึ้ง](assignment.md) --- **ข้อจำกัดความรับผิดชอบ**: เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้