เชี่ยวชาญแปลง Seaborn 1 แปลงในแต่ละครั้ง
Python Vizardry เป็นชุดบทความสั้นเกี่ยวกับไลบรารีการแสดงภาพต่างๆ สำหรับ Python โดยเราจะดูทีละ 1 พล็อต นี่เป็นการอ่านอย่างรวดเร็วเพื่อให้คุณเข้าใจสัญชาตญาณและโค้ด อย่าลังเลที่จะเก็บบทความเหล่านี้ไว้ใกล้ตัวเพื่อใช้เป็นสมุดบันทึกโกงสำหรับแปลงดังกล่าว
ซีบอร์น?
Seaborn เป็นไลบรารีการแสดงภาพข้อมูล Python ที่ใช้ Matplotlib Matplotlib มุ่งเน้นไปที่การจัดหาบล็อคการสร้างระดับต่ำสำหรับการสร้างแปลงเป็นหลัก Seaborn มอบอินเทอร์เฟซระดับสูงสำหรับการสร้างกราฟิกทางสถิติที่น่าสนใจและให้ข้อมูล แม้ว่า Matplotlib จะให้ตัวเลือกที่ยืดหยุ่นและปรับแต่งได้มากกว่า แต่ Seaborn มักจะใช้งานง่ายกว่า และสร้างตัวเลขที่สวยงามมากขึ้นโดยใช้โค้ดน้อยลง
คุณสมบัติ:
- การสนับสนุนในตัวสำหรับการแสดงภาพแบบจำลองทางสถิติและความไม่แน่นอน
- มีฟังก์ชันสำหรับการแสดงภาพชุดข้อมูลที่ซับซ้อน เช่น แผนภาพคู่ ซึ่งทำให้สำรวจความสัมพันธ์ได้ง่าย
- ตัวเลือกจานสีขั้นสูง
- รองรับการลงจุดในบริบทที่แตกต่างกัน (เช่น ใน Jupyter Notebook หรือบนหน้าเว็บ)
การติดตั้งและการนำเข้า Seaborn
#Installing Seaborn pip install seaborn #Importing Seaborn import seaborn as sns #Importing the library import seaborn as sns
กำลังโหลดชุดข้อมูล
ชุดข้อมูล “mpg” เป็นชุดข้อมูลในตัวในห้องสมุด Seaborn ซึ่งมีข้อมูลเกี่ยวกับรถยนต์รุ่นต่างๆ และประสิทธิภาพการใช้เชื้อเพลิง (วัดเป็นไมล์ต่อแกลลอนหรือ mpg) ชุดข้อมูลยังมีข้อมูลเกี่ยวกับที่มาของรถ ปริมาตรกระบอกสูบ จำนวนกระบอกสูบ แรงม้า น้ำหนัก รุ่นปี และความเร่งของรถแต่ละคัน และแน่นอนว่าเป็นชื่อรถด้วย
cars = sns.load_dataset('mpg')
พล็อตกระจาย
โดยสัญชาตญาณ นี่เป็นรูปแบบการวางแผนที่ง่ายที่สุดในการทำความเข้าใจ เรามีพิกัดมากพอๆ กับที่เรามีแกน เราสามารถพล็อตทุกการสังเกตในรูปแบบของจุดบนระบบพิกัดคาร์ทีเซียน n มิติ
เป็นวิธีการสำรวจด้วยภาพว่าตัวแปรหนึ่งได้รับผลกระทบจากอีกตัวแปรหนึ่งอย่างไร หรือกล่าวอีกนัยหนึ่งคือ ความสัมพันธ์ระหว่างตัวแปรสองตัว
ตามแนวทางปฏิบัติมาตรฐาน ตัวแปรอิสระจะถูกพล็อตบนแกน x (แกนนอน) และตัวแปรตามจะถูกพล็อตบนแกน y (แกนแนวตั้ง) ทำให้ง่ายต่อการระบุสิ่งที่เกิดขึ้นกับตัวแปรตามด้วยวิธีนี้ คุณจะเห็นวิธีการ
กราฟผลลัพธ์จะแสดงว่ามีความสัมพันธ์เชิงบวก ลบ หรือไม่มีเลยระหว่างตัวแปรทั้งสอง
ซีบอร์น.scatterplot()
นี่คือพารามิเตอร์ที่เรามีเมื่อดำเนินการ scatterplot ของ Seaborn
seaborn.scatterplot( data=None, *, x=None, y=None, hue=None, size=None, style=None, palette=None, hue_order=None, hue_norm=None, sizes=None, size_order=None, size_norm=None, markers=True, style_order=None, legend='auto', ax=None, **kwargs )
มาเริ่มวางแผนกัน...
สำหรับแผนภาพแรกของเรา กราฟ x-y พื้นฐานของ "น้ำหนัก" และ "ประสิทธิภาพการใช้เชื้อเพลิง" ของรถควรจะเหมาะสม
sns.scatterplot( data=cars, x='weight', y='mpg' );
ตามหลักเหตุผลแล้ว เราเห็นความสัมพันธ์แบบผกผันระหว่างน้ำหนักและประสิทธิภาพการใช้เชื้อเพลิง
เรามามีอิทธิพลต่อลักษณะของพล็อตเรื่องนี้กัน เราสามารถเปลี่ยนเครื่องหมายได้โดยใช้พารามิเตอร์ marker คุณมีเครื่องหมาย 11 ประเภท ณ วันที่บทความนี้ ขณะที่เรากำลังดำเนินการอยู่ เรามากำหนดขนาดของเครื่องหมายโดยใช้พารามิเตอร์ s กันดีกว่า
sns.scatterplot( data=cars, x='weight', y='mpg', marker='*', s=150 );
มาเปลี่ยนสีของมาร์กเกอร์โดยใช้รหัสฐานสิบหกที่กำหนดให้กับพารามิเตอร์ marker
sns.scatterplot( data=cars, x='weight', y='mpg', marker='*', s=150, color='#FF5733' );
เนื่องจากมีเครื่องหมายทับซ้อนกัน จึงเป็นความคิดที่ดีที่จะทำให้มีความทึบน้อยลง เราสามารถทำได้โดยใช้พารามิเตอร์ alpha ลองใช้ 0.5 alpha หรือความโปร่งใส 50%
sns.scatterplot( data=cars, x='weight', y='mpg', marker=7, s=100, color='#581845', alpha=0.5 );
ที่นี่ สามารถใช้พารามิเตอร์ matplotlib ได้ ตามตัวอย่าง เราสามารถเพิ่ม edge_color ให้กับเครื่องหมายได้เช่นกัน
sns.scatterplot( data=cars, x='weight', y='mpg', s=100, alpha=0.4, edgecolor='black' );
มาเพิ่มสิ่งนี้กัน เราสามารถแก้ไขความหมายบางอย่างได้ เช่น hue, size และ style ดังนั้นเราจึงสามารถเพิ่มมิติเพิ่มเติมให้กับพล็อตของเรา โดยการกำหนดตัวแปรหมวดหมู่ให้กับพารามิเตอร์เหล่านี้
เพียงเพื่อไม่ให้เนื้อเรื่องดังเกินไป ฉันจะกรองรถยนต์ที่มี 4, 6 และ 8 สูบ นอกจากนี้ ให้เพิ่มตัวแปรหมวดหมู่อีกรายการหนึ่งที่ระบุว่ารถยนต์ที่มีอายุมากกว่าปี 1975 เป็นรถย้อนยุค
#Filtering to get 4,6,8 cylinder cars cars = cars.loc[cars.cylinders.isin([4,6,8]), :] #Labelling model_year cars['retro'] = cars.model_year < 75 #Plot sns.scatterplot( data=cars, x='weight', y='mpg', hue='origin', style='cylinders', size='retro' );
สังเกตว่าเราสามารถเพิ่มข้อมูลจำนวนมากลงในโครงเรื่องของเราได้อย่างไรโดยไม่ต้องเขียนโค้ดมากเกินไป เราสามารถเห็นได้ว่าไม้กางเขนสอดคล้องกับรถรุ่นใหม่อย่างไร เมื่อเทียบกับจุดสำหรับรถรุ่นเก่า ขนาดของเครื่องหมายเหล่านี้บอกเราว่าจำนวนกระบอกสูบคือเครื่องยนต์ส่วนใด ในขณะที่สีบอกเราถึงประเทศต้นทาง นั่นเป็นการอัพเกรดเล็กน้อยจากที่เราวาดไว้ก่อนหน้านี้
เรามาดูจานสีที่ละเอียดกว่านี้กันดีกว่า
sns.scatterplot( data=cars, x='weight', y='mpg', hue='origin', style='retro', size='cylinders', palette='pastel' );
เรามีตัวเลือกในการกำหนดลำดับของความหมายเหล่านี้โดยใช้พารามิเตอร์ hue_order, size_order และ style_order เรามาดูสิ่งนี้กัน
และในขณะที่เรากำลังดำเนินการอยู่ เรามาปรับแต่งโค้ดกันสักหน่อยเพื่อให้ข้อมูลและแกนถูกประกาศเป็นบรรทัดเดียว ตามด้วยซีแมนทิกส์ และพารามิเตอร์เพิ่มเติมใดๆ
sns.scatterplot( data=cars, x='weight', y='mpg', hue='origin', style='retro', size='cylinders', hue_order=['japan', 'europe', 'usa'], size_order=[8, 6, 4], style_order=[True, False], palette='magma' );
มีความสุขในการวางแผน!
ข้อมูลอ้างอิงถึงเอกสาร seaborn.scatterplot อย่างเป็นทางการ