ggplot2 - การเปลี่ยนแผนภูมิ
ในบทที่แล้วเราได้ดูแผนภูมิประเภทต่างๆซึ่งสามารถสร้างได้โดยใช้แพ็คเกจ "ggplot2" ตอนนี้เราจะเน้นไปที่รูปแบบที่เหมือนกันเช่นการแยกแผนภูมิแท่งแผนภูมิอมยิ้มและอื่น ๆ อีกมากมาย ในการเริ่มต้นเราจะเริ่มต้นด้วยการสร้างแผนภูมิแท่งแบบแยกส่วนและขั้นตอนที่จะปฏิบัติตามมีดังต่อไปนี้ -
ทำความเข้าใจกับชุดข้อมูล
โหลดแพ็คเกจที่ต้องการและสร้างคอลัมน์ใหม่ชื่อ 'car name' ภายในชุดข้อมูล mpg
#Load ggplot
> library(ggplot2)
> # create new column for car names
> mtcars$`car name` <- rownames(mtcars)
> # compute normalized mpg
> mtcars$mpg_z <- round((mtcars$mpg - mean(mtcars$mpg))/sd(mtcars$mpg), 2)
> # above / below avg flag
> mtcars$mpg_type <- ifelse(mtcars$mpg_z < 0, "below", "above")
> # sort
> mtcars <- mtcars[order(mtcars$mpg_z), ]
การคำนวณข้างต้นเกี่ยวข้องกับการสร้างคอลัมน์ใหม่สำหรับชื่อรถยนต์การคำนวณชุดข้อมูลปกติโดยใช้ฟังก์ชัน round เรายังสามารถใช้ค่าสถานะเฉลี่ยด้านบนและด้านล่างเพื่อรับค่าของฟังก์ชัน "type" ต่อมาเราเรียงลำดับค่าเพื่อสร้างชุดข้อมูลที่ต้องการ
ผลลัพธ์ที่ได้รับมีดังนี้ -
แปลงค่าเป็นตัวประกอบเพื่อคงลำดับที่เรียงไว้ในพล็อตเฉพาะดังที่กล่าวไว้ด้านล่าง -
> # convert to factor to retain sorted order in plot.
> mtcars$`car name` <- factor(mtcars$`car name`, levels = mtcars$`car name`)
ผลลัพธ์ที่ได้จะกล่าวถึงด้านล่าง -
การเปลี่ยนแผนภูมิแท่ง
ตอนนี้สร้างแผนภูมิแท่งแบบแยกส่วนด้วยแอตทริบิวต์ที่กล่าวถึงซึ่งใช้เป็นพิกัดที่ต้องการ
> # Diverging Barcharts
> ggplot(mtcars, aes(x=`car name`, y=mpg_z, label=mpg_z)) +
+ geom_bar(stat='identity', aes(fill=mpg_type), width=.5) +
+ scale_fill_manual(name="Mileage",
+ labels = c("Above Average", "Below Average"),
+ values = c("above"="#00ba38", "below"="#f8766d")) +
+ labs(subtitle="Normalised mileage from 'mtcars'",
+ title= "Diverging Bars") +
+ coord_flip()
Note - แผนภูมิแท่งแบบแยกส่วนทำเครื่องหมายสำหรับสมาชิกมิติข้อมูลบางส่วนที่ชี้ไปทางขึ้นหรือลงตามค่าที่กล่าวถึง
ผลลัพธ์ของการแยกแผนภูมิแท่งมีการระบุไว้ด้านล่างซึ่งเราใช้ฟังก์ชัน geom_bar ในการสร้างแผนภูมิแท่ง -
การเปลี่ยนแผนภูมิอมยิ้ม
สร้างแผนภูมิอมยิ้มที่แตกต่างโดยมีแอตทริบิวต์และพิกัดเดียวกันโดยมีการเปลี่ยนแปลงเฉพาะฟังก์ชันที่จะใช้คือ geom_segment () ซึ่งช่วยในการสร้างแผนภูมิอมยิ้ม
> ggplot(mtcars, aes(x=`car name`, y=mpg_z, label=mpg_z)) +
+ geom_point(stat='identity', fill="black", size=6) +
+ geom_segment(aes(y = 0,
+ x = `car name`,
+ yend = mpg_z,
+ xend = `car name`),
+ color = "black") +
+ geom_text(color="white", size=2) +
+ labs(title="Diverging Lollipop Chart",
+ subtitle="Normalized mileage from 'mtcars': Lollipop") +
+ ylim(-2.5, 2.5) +
+ coord_flip()
Diverging Dot Plot
สร้างพล็อตจุดที่แตกต่างกันในลักษณะที่คล้ายกันโดยที่จุดแสดงถึงจุดในพล็อตที่กระจัดกระจายในมิติที่ใหญ่กว่า
> ggplot(mtcars, aes(x=`car name`, y=mpg_z, label=mpg_z)) +
+ geom_point(stat='identity', aes(col=mpg_type), size=6) +
+ scale_color_manual(name="Mileage",
+ labels = c("Above Average", "Below Average"),
+ values = c("above"="#00ba38", "below"="#f8766d")) +
+ geom_text(color="white", size=2) +
+ labs(title="Diverging Dot Plot",
+ subtitle="Normalized mileage from 'mtcars': Dotplot") +
+ ylim(-2.5, 2.5) +
+ coord_flip()
ในที่นี้คำอธิบายจะแสดงถึงค่า "สูงกว่าค่าเฉลี่ย" และ "ต่ำกว่าค่าเฉลี่ย" ด้วยสีเขียวและสีแดงที่แตกต่างกัน Dot plot ถ่ายทอดข้อมูลแบบคงที่ หลักการนี้เหมือนกับหลักการใน Diverging bar chart ยกเว้นว่าจะใช้เฉพาะจุดเท่านั้น