Sau khi nghiên cứu cuốn sách của Hadley và tìm kiếm ở đây trên SO tôi đã tạo ra một bản đồ nhiệt bao gồm một ma trận năm và tháng, với màu sắc thay đổi theo phần trăm thay đổi trong một biến chuỗi thời gian. Bản đồ nhiệt và mã tôi sử dụng để lấy nó được hiển thị bên dưới. Tôi có một vài câu hỏi còn lại mà tôi không thể tự giải quyết được.R ggplot heatmap sử dụng geom_tile(): cách sắp xếp theo năm và hiển thị tất cả các năm theo trục y?
1) Làm cách nào để sắp xếp/sắp xếp ma trận sao cho các năm trong trục y chạy từ sớm nhất đến trục mới nhất? Trong trường hợp này tôi muốn những năm bắt đầu từ đầu năm 1995 và tiếp tục đến năm 2011 ở dưới cùng của trục y.
2) Tôi muốn mỗi năm được hiển thị trên trục y nhưng thay vào đó chỉ hiển thị mỗi năm thứ 5. Tôi nghĩ rằng scale_y_date trong mã của tôi sẽ đối phó với điều này nhưng nó dường như không có ảnh hưởng. Làm thế nào tôi có thể buộc trục y hiển thị mỗi năm?
3) Tôi nghi ngờ điều này vẫn nằm trong danh sách "cần làm" của ggplot2, nhưng có cách nào để tạo nhãn trục x (trong trường hợp này là tháng 1, tháng 2, tháng 3, tháng 4 vv) hiển thị ở đầu của cốt truyện chứ không phải ở phía dưới?
require(ggplot2)
mydf <- data.frame(date=seq(as.Date("1995/1/1"), by="month", length.out=203),yoy=runif(203, min=-1, max=1))
p_heat <- ggplot(mydf, aes(x=month(date,label=TRUE),y=year(date), fill = yoy, label = sprintf("%1.1f%%", 100*yoy),size=10)) +
scale_y_date(major="years", format="%Y") +
geom_tile() + geom_text(aes(size=10)) +
scale_fill_gradient2(low = "red", high = "green") +
scale_x_discrete(expand=c(0,0)) +
scale_y_continuous(expand=c(0,0)) +
opts(title="Value (%)") +
opts(panel.grid.minor=theme_blank()) +
opts(axis.ticks = theme_blank()) +
opts(panel.grid.major=theme_blank()) +
opts(axis.title.y = theme_blank()) +
opts(axis.title.x = theme_blank()) +
opts(legend.position = "none")
p_heat
Vui lòng tránh các tông màu đỏ lục, vì ~ 10% nam giới sẽ gặp khó khăn lớn khi phân biệt tích cực với giá trị âm. – hadley