2015-04-22 12 views
5

Tôi muốn tạo bản đồ nhiệt với các giá trị thực tế như các nhãn trên bản đồ, nhưng các nhãn không hiển thị.Làm thế nào để nhận được nhãn trong bản đồ nhiệt ggplot của tôi?

Dưới đây là dữ liệu của tôi:

df <- structure(list(a = c(0.39, 0.26, 0.39, 0.45, 0.41, 0.42, 0.42, 0.34, 0.36, 0.22, 0.34, 0.08, 0.18, 0.3, 0.29, 0.23, 0.31, 0.1, 0.28, 0.19, 0.13, 0.27, 0.33, 0.37), b = c(0.24, 0.22, 0.22, 0.35, 0.22, 0.29, 0.2, 0.19, 0.3, 0.33, 0.31, -0.11, 0.13, 0.25, 0.39, 0.33, 0.48, 0.38, 0.55, 0.21, 0.42, 0.48, 0.29, 0.55), c = c(0.29, 0.18, 0.24, 0.27, 0.27, 0.43, 0.31, 0.32, 0.3, 0.28, 0.3, 0.06, 0.18, 0.21, 0.32, 0.27, 0.37, 0.21, 0.47, 0.1, 0.23, 0.45, 0.36, 0.56), d = c(0.1, 0.03, 0.22, 0.21, 0.16, 0.4, 0.37, 0.35, 0.59, 0.59, 0.63, 0.31, 0.56, 0.55, 0.67, 0.63, 0.57, -0.05, 0.23, 0.34, 0.01, 0.37, 0.25, 0.26), `Item` = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 14L, 22L, 23L), .Label = c("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "w", "x"), class = "factor")), .Names = c("a", "b", "c", "d", "Item"), row.names = c(NA, 24L), class = "data.frame")df.m <- melt(df, id="Item", variable.name="Scale", value.name="Correlation") 

Dưới đây là mã của tôi:

library(ggplot2) 
library(grid) 

ggplot(df.m, aes(Scale, Item, fill=abs(Correlation))) + 
    geom_text(aes(label = round(Correlation, 2)), size=2.5) + 
    geom_tile() + 
    theme_bw(base_size=10) + 
    theme(axis.text.x = element_text(angle = 90), 
     axis.title.x=element_blank(), 
     axis.title.y=element_blank(), 
     plot.margin = unit(c(3, 1, 0, 0), "mm")) + 
    scale_fill_gradient(low="white", high="blue") + 
    guides(fill=F) 

Tôi hy vọng điều này đặt giá trị như một nhãn trong lưới:

geom_text(aes(label = round(Correlation, 2)), size=2.5)  

Nhưng nó doesn không xảy ra. Tại sao? Rất cám ơn trước.

(Tôi đã lấy cảm hứng từ đẹp post này)

+0

Điều này xảy ra ở đây ... – lukeA

+2

Chỉ cần thay đổi thứ tự của 'geom_text' và' geom_tile' –

Trả lời

5

Layers trong ggplot được vẽ theo thứ tự như chúng được viết. Để hiển thị văn bản phía trên bản đồ nhiệt, cuộc gọi geom_text() phải được thực hiện sau khi gọi số geom_tile().

..... 
    geom_tile() + 
    geom_text(aes(label = round(Correlation, 2)), size=2.5) + 
    ..... 
Các vấn đề liên quan