2017-09-14 61 views
0

我問了一個關於這裏解決的熱圖的問題:custom colored heatmap of categorical variables。我根據接受的答案中的建議,爲我的scale_fill_manual定義了所有組合。爲x-y的所有組合繪製熱圖貼圖

基於這個問題,我想知道如何告訴ggplot2繪製與變量的所有組合,而不是僅在數據幀中可用的那些熱圖(因爲他們已經在scale_fill_manual但不顯示在最後的情節)。

我該怎麼做?

當前的繪圖代碼:

df <- data.frame(X = LETTERS[1:3], 
       Likelihood = c("Almost Certain","Likely","Possible"), 
       Impact = c("Catastrophic", "Major","Moderate"), 
       stringsAsFactors = FALSE) 
df$color <- paste0(df$Likelihood,"-",df$Impact) 

ggplot(df, aes(Impact, Likelihood)) + geom_tile(aes(fill = color),colour = "white") + geom_text(aes(label=X)) + 
    scale_fill_manual(values = c("Almost Certain-Catastrophic" = "red","Likely-Major" = "yellow","Possible-Moderate" = "blue")) 

scale_fill_manual包含其各自顏色的Impact, Likelihood所有組合。

+0

看看'GGally'包。 – Thierry

+0

所以你基本上想要所有剩餘的瓷磚,沒有價值,是相同的顏色(例如,灰色?) – timfaber

+0

你可以添加你的當前代碼的問題?一種解決方案可能是擴展數據集以包含「可能性」和「影響」的所有組合,然後用例如「tidyr :: complete」進行繪圖。 – aosmith

回答

0

與@aosmith類似,我嘗試了expand.grid以獲得一組有限的組合,但tidyr::complete()的作品也相當不錯。添加顏色和字母,並使用設置的顏色範圍進行填充。

df <- data.frame(Likelihood = c("Almost Certain","Likely","Possible"), 
       Impact = c("Catastrophic", "Major","Moderate"), 
       stringsAsFactors = FALSE) 
df2 <- df %>% tidyr::complete(Likelihood,Impact) # alt expand.grid(df) 

df2$X <- LETTERS[1:9] # Add letters here 
df2$color <- paste0(df2$Likelihood,"-",df2$Impact) # Add colors 


ggplot(df2, aes(Impact, Likelihood)) + geom_tile(aes(fill = color),colour = "white") + geom_text(aes(label=X)) + 
    scale_fill_manual(values = RColorBrewer::brewer.pal(9,"Pastel1"))