Tôi có một bản đồ nhiệt tiếp tục ngày càng phức tạp hơn. Ví dụ về dữ liệu được làm nóng:ggplot2: Phức tạp phức tạp hơn
head(df2)
Class Subclass Family variable value
1 A chemosensory family_1005117 caenorhabditis_elegans 10
2 A chemosensory family_1011230 caenorhabditis_elegans 4
3 A chemosensory family_1022539 caenorhabditis_elegans 10
4 A other family_1025293 caenorhabditis_elegans NA
5 A chemosensory family_1031345 caenorhabditis_elegans 10
6 A chemosensory family_1033309 caenorhabditis_elegans 10
tail(df2)
Class Subclass Family variable value
6496 C class c family_455391 trichuris_muris 1
6497 C class c family_812893 trichuris_muris NA
6498 F class f family_225491 trichuris_muris 1
6499 F class f family_236822 trichuris_muris 1
6500 F class f family_276074 trichuris_muris 1
6501 F class f family_768194 trichuris_muris NA
Sử dụng ggplot2 và geom_tile, tôi có thể tạo bản đồ nhiệt tuyệt vời của dữ liệu. Tôi tự hào của mã (đây là kinh nghiệm đầu tiên của tôi trong R), do đó đã đăng nó dưới đây:
df2[df2 == 0] <- NA
df2[df2 > 11] <- 10
df2.t <- data.table(df2)
df2.t[, clade := ifelse(variable %in% c("pristionchus_pacificus", "caenorhabditis_elegans", "ancylostoma_ceylanicum", "necator_americanus", "nippostrongylus_brasiliensis", "angiostrongylus_costaricensis", "dictyocaulus_viviparus", "haemonchus_contortus"), "Clade V",
ifelse(variable %in% c("meloidogyne_hapla","panagrellus_redivivus", "rhabditophanes_kr3021", "strongyloides_ratti"), "Clade IV",
ifelse(variable %in% c("toxocara_canis", "dracunculus_medinensis", "loa_loa", "onchocerca_volvulus", "ascaris_suum", "brugia_malayi", "litomosoides_sigmodontis", "syphacia_muris", "thelazia_callipaeda"), "Clade III",
ifelse(variable %in% c("romanomermis_culicivorax", "trichinella_spiralis", "trichuris_muris"), "Clade I",
ifelse(variable %in% c("echinococcus_multilocularis", "hymenolepis_microstoma", "mesocestoides_corti", "taenia_solium", "schistocephalus_solidus"), "Cestoda",
ifelse(variable %in% c("clonorchis_sinensis", "fasciola_hepatica", "schistosoma_japonicum", "schistosoma_mansoni"), "Trematoda", NA))))))]
df2.t$clade <- factor(df2.t$clade, levels = c("Clade I", "Clade III", "Clade IV", "Clade V", "Cestoda", "Trematoda"))
plot2 <- ggplot(df2.t, aes(variable, Family))
tile2 <- plot2 + geom_tile(aes(fill = value)) + facet_grid(Class ~ clade, scales = "free", space = "free")
tile2 <- tile2 + scale_x_discrete(expand = c(0,0)) + scale_y_discrete(expand = c(0,0))
tile2 <- tile2 + theme(axis.text.y = element_blank(), axis.ticks.y = element_blank(), legend.position = "right", axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.55), axis.text.y = element_text(size = rel(0.35)), panel.border = element_rect(fill=NA,color="grey", size=0.5, linetype="solid"))
tile2 <- tile2 + xlab(NULL)
tile2 <- tile2 + scale_fill_gradientn(breaks = c(1,2,3,4,5,6,7,8,9,10),labels = c("1", "2", "3", "4", "5", "6", "7", "8", "9", ">10"), limits = c(1, 10), colours = palette(11), na.value = "white", name = "Members")'
Như bạn thấy, có khá nhiều sắp xếp lại thủ công tham gia, nếu không mã là khá đơn giản . Dưới đây là những hình ảnh đầu ra:
Tuy nhiên, bạn có thể nhận thấy rằng một cột toàn bộ thông tin, "Thứ hạng" không được sử dụng. Về cơ bản, mỗi phân lớp phù hợp trong một lớp. Nó sẽ là hoàn hảo nếu tôi đã có thể facet các Subclasses trong lớp Facet đã được hiển thị. Theo như tôi biết, điều này là không thể. Để chính xác, chỉ có loại A có các lớp con khác nhau. Các lớp khác chỉ đơn giản là có tên lớp được nhân đôi (F = lớp f). Có cách nào khác để tổ chức bản đồ nhiệt này để tôi có thể hiển thị tất cả thông tin liên quan không? Các lớp con bị thiếu chứa một số dữ liệu quan trọng nhất và sẽ là cần thiết nhất để vẽ các suy luận từ dữ liệu.
Một phương pháp thay thế sẽ là khía cạnh Subclases thay vì Classes, sắp xếp lại chúng theo cách thủ công để các lớp được nhóm lại với nhau, và sau đó vẽ một số hộp xung quanh chúng để phân định từng lớp. Tôi không có ý tưởng làm thế nào điều này sẽ được thực hiện.
Mọi trợ giúp sẽ rất hữu ích. Vui lòng cho tôi biết nếu bạn cần bất kỳ thông tin bổ sung nào.
Nơi bạn có 'facet_grid (Lớp ~ nhánh,', thay đổi nó cho 'facet_grid (Lớp + Subclass ~ nhánh,' – Gregor
Mặc dù, cho đặt hàng của các nhãn, bạn có thể muốn 'Subclass + Class' – Gregor
Đó là một cách để làm điều đó, cảm ơn bạn.Đó không chính xác những gì tôi đã hình dung (các khía cạnh lồng nhau), vì nó đơn giản là chia nhỏ nó thành các lớp con và sau đó thêm nhãn Lớp, tôi đoán nó không đẹp như tôi giống như, nhưng có lẽ đó là tốt như nó nhận được.Cảm ơn cho đầu vào của bạn, @Gregor – Nic