Từ bộ dữ liệu df ở trong câu 1, bạn hãy vẽ bằng package ggplot2 để được hình sau.
TipĐáp án
Vì ggplot2 không thuận tiện để vẽ hai trục tung (theo tìm hiểu thì tác giả package không recomment hướng này mà muốn tách ra thành từng đồ thị đơn để không bị nhầm việc đọc kết quả), tuy vậy ta vẫn có tham số để hỗ trợ vẽ hai trục tung (dual-Y axis) bằng lệnh sec_axis(), bản chất là vẽ một trục Y bên phải, ta sẽ cần tách riêng hai linechart và tính scale_factor cho phù hợp. Tóm lại, muốn vẽ hai trục tung chuẩn nhất là ta vẽ bằng Base R như câu 1.
Ngoài ra vị trí legend trong ggplot2 ở “top”, thì nằm ngoài đồ thị, còn Base R thì nằm trong đồ thị, ta có thể tinh chỉnh thủ công cũng được.
library(ggplot2)# package ggplot2 khi vẽ linechart sẽ tự động xếp đúng thứ tự từ nhỏ đến lớn ở trục X, không cần phải order như cách vẽ ở Base R, việc này có thể tiện lợi, nhưng cũng làm ta "chủ quan" không rõ cách vẽ của linechart.scale_factor <-2ggplot() +geom_line(data = df,mapping =aes(x = Day,y = Temp,color ="Temp"), ) +geom_line(data = df,mapping =aes(x = Day,y = Wind *2,color ="Wind"), ) +scale_y_continuous(name ="Temp",limits =c(0, 100),sec.axis =sec_axis(~ . /2,name ="Wind" ) ) +theme_bw(base_size =16) +scale_color_manual(values =c("Temp"="red","Wind"="blue"),name ="") +theme(legend.position ="top")
Ngoài ra, ta có thể vẽ hai trục tung sử dụng package lattice.