Khi mới bắt đầu làm việc với GGPLOT2, sẽ rất khó để có thể tùy chỉnh các thành phần cơ bản trong biểu đồ. Trong bài viết này, Ranalytics
sẽ hướng dẫn các bạn tùy chỉnh những thành phần cơ bản nhất của biểu đồ với GGPLOT2.
Khi đã tạo được các biểu đồ cơ bản, ta còn cần phải làm chủ được các thành phần khác của biểu đồ, trong đó quan trọng nhất gồm có:
Để thay đổi các thành phần này, ta dùng hàm theme để tạo layer theme mới cho biểu đồ đã tạo. Các thành phần tương ứng của hàm theme là:
plot.title
axis.title.x
, axis.title.y
axis.text.x
, axis.text.y
legend.title
, legend.text
library(dplyr)
library(ggplot2)
data <- diamonds %>% sample_n(5000)
data %>% summary
## carat cut color clarity depth
## Min. :0.200 Fair : 137 D: 652 SI1 :1213 Min. :54.70
## 1st Qu.:0.390 Good : 462 E: 880 VS2 :1139 1st Qu.:61.00
## Median :0.700 Very Good:1086 F: 880 SI2 : 838 Median :61.80
## Mean :0.794 Premium :1300 G:1049 VS1 : 772 Mean :61.75
## 3rd Qu.:1.050 Ideal :2015 H: 765 VVS2 : 444 3rd Qu.:62.50
## Max. :4.130 I: 520 VVS1 : 345 Max. :72.90
## J: 254 (Other): 249
## table price x y
## Min. :52.00 Min. : 354.0 Min. : 0.000 Min. : 0.000
## 1st Qu.:56.00 1st Qu.: 934.5 1st Qu.: 4.690 1st Qu.: 4.700
## Median :57.00 Median : 2381.5 Median : 5.700 Median : 5.710
## Mean :57.49 Mean : 3871.7 Mean : 5.718 Mean : 5.732
## 3rd Qu.:59.00 3rd Qu.: 5226.2 3rd Qu.: 6.540 3rd Qu.: 6.540
## Max. :73.00 Max. :18788.0 Max. :10.020 Max. :58.900
##
## z
## Min. : 0.000
## 1st Qu.: 2.890
## Median : 3.520
## Mean : 3.537
## 3rd Qu.: 4.040
## Max. :31.800
##
#Tạo theme
theme_set(theme_minimal())
p <- ggplot(data, aes(x=carat, y = price)) +
geom_point(aes(col=cut))
p
#Bước 2: Tạo thêm "layer" cho phép tùy chỉnh các thành phần trong biểu đồ
#Sử dụng layer "theme" để tùy chỉnh
#Bước 2.1: Tạo biểu đồ có title & subtitle
p1 <- p +
labs(title = "Diamonds - price vs. carat")
p1
p1 +
theme(plot.title = element_text(size = 15, face = "bold"))
#library(extrafont)
p1 +
theme(plot.title = element_text(size = 20,
face = "bold",
family = "serif"))
p +
ggtitle("Diamonds \nprice vs. carat") +
theme(plot.title = element_text(size = 20,
face = "bold",
family = "serif"))
p +
theme(axis.title.x = element_text(size = 11,
face = "bold"))
p +
theme(axis.title.x = element_text(family = "serif",
face = "bold"))
p +
theme(axis.title = element_text(family = "serif",
face = "bold"))
p +
theme(axis.text.x = element_text(size = 13, face = "italic"))
p +
theme(axis.text.x = element_text(size = 13, angle = 45))
p +
theme(axis.text = element_text(size = 13, angle = 45))
p + theme(legend.position = "none")
p + theme(legend.title = element_blank())
p +
theme(legend.title = element_text(size = 14,
face = "bold",
color = "red"))
p + scale_colour_discrete(name = "Type of diamonds")
p +
theme(legend.text = element_text(size =12,
face = "bold",
family = "serif"))
Các màu mặc định của GGPLOT2 đáp ứng phần lớn các yêu cầu trong phân tích và báo cáo. Tuy nhiên, khi cần tùy chỉnh màu sắc mặc định này lại có thể rất khó khăn nếu ta không biết cách làm. Trong thực tế, các biểu đồ của các công ty lớn, hoặc các báo cáo phân tích đều phải tuân theo chuẩn màu sắc của cả công ty. Do đó, ta cần phải nắm được cách tùy chỉnh màu sắc của biểu đồ trong R.
Một số mã màu sắc của R có thể tham khảo tại link
p +
scale_color_manual(values = c("darkred", "darkblue", "violet", "darkgreen", "orange"))
#Sử dụng Brewer
p +
scale_colour_brewer(palette = "Set1")
#Sử dụng bảng màu của Tableau
library(ggthemes)
p +
scale_colour_tableau() +
theme_tufte()
Màu trên GGPLOT2 có thể thay đổi với dài màu liên tục. Xem ví dụ sau.
# Tạo biểu đồ gốc
p <- ggplot(data, aes(x = carat, y = price)) +
geom_point(aes(col=price))
p
scale_color_gradient
p + scale_color_gradient(low = "darkblue", high = "darkred")
scale_color_gradient2
p + scale_color_gradient2(midpoint = mean(data$price),
low = "blue4",
mid = "white",
high = "red4")
Như vậy, chúng ta đã vừa biết xong những cách thay đổi các thuộc tính cơ bản nhất của biểu đồ với ggplot2
. Chúc các bạn học và làm việc hiệu quả với Ranalytics.vn!