2014-10-03 218 views
3

我試圖創建一個熱圖來顯示驅動每個單元格中顏色的值。如果一個單元格由於有5個觀測值而呈深藍色,我想看到該單元格中的數字5。如何顯示在熱圖單元格中的數值單元格的值

(目的是建立一個信用評級遷移矩陣,其中一個軸是今年的信用評級,另一個是去年的信用評級。輸入是一個數據框,其中每行是一個公司的觀察值,公司的信用以及去年的信用評級,矩陣顯示哪些公司在兩年期間信用評級穩定,評級較低,並且評級更高。

下面是數據和代碼

require(ggplot2) 

# Create a dataframe mm where each row is one observation for one company, 
# the company's credit rating this year, and it credit rating last year. A company ID is 
# provided. 


mm<-data.frame(
    CompamyID = c(1:14), 
    CurrentYear =c("Aaa","Aa","B","Baa","C","Aaa","Aa","B","Baa","C","Aa","B","Baa","C"), 
    PreviousYear=c("Aaa","Aa","B","Baa","Aa","B","Baa","C","C","Aaa","Aa","B","Baa","C"), 
    Count=rep(1,14) 
) 

# Create heatmap and show the number of observations in each cell. 
# I have used label= # sum() for illustration but it is wrong. 

ggplot(data=mm, aes(x = mm$CurrentYear, y=mm$PreviousYear)) + 
    geom_bin2d() + 
    geom_text(aes(fill = mm$Count, label = sum(mm$Count)))+ 
    scale_x_discrete(limits =c("Aaa", "Aa", "A", "Baa", "Ba", "B", "Caa", "Ca", "C")) + 
    scale_y_discrete(limits=c("C","Ca","Caa","B","Ba", "Baa", "A", "Aa", "Aaa")) + 
    scale_fill_gradient2() + 
    theme(panel.grid.major = element_line(colour ="white", size = 0.5))+ 
    theme(panel.grid.minor = element_line(colour ="black", linetype ="dashed", size = 0.5)) + 
    theme(panel.background = element_rect(colour ="black", fill ="white",size = 1.0)) + 
    ggtitle("MIGRATION MATRIX USING geom_bin2d()") + 
    xlab("Current Year") + 
    ylab("Previous Year")   

回答

4

我會用stat_bin2d所以ggplot2內部計算的計數,使他們的名字..count..下可用。

ggplot(data=mm, aes(x = mm$CurrentYear, y=mm$PreviousYear)) + 
    geom_bin2d() + 
    stat_bin2d(geom="text", aes(label=..count..))+ 
    scale_x_discrete(limits =c("Aaa", "Aa", "A", "Baa", "Ba", "B", "Caa", "Ca", "C")) + 
    scale_y_discrete(limits=c("C","Ca","Caa","B","Ba", "Baa", "A", "Aa", "Aaa")) + 
    scale_fill_gradient2() + 
    theme(panel.grid.major = element_line(colour ="white", size = 0.5))+ 
    theme(panel.grid.minor = element_line(colour ="black", linetype ="dashed", size = 0.5)) + 
    theme(panel.background = element_rect(colour ="black", fill ="white",size = 1.0)) + 
    ggtitle("MIGRATION MATRIX USING geom_bin2d()") + 
    xlab("Current Year") + 
    ylab("Previous Year") 

我希望有幫助。

+0

是的,它的工作!謝謝,我真的很感激。 – user3118031 2014-10-03 12:46:50

+0

如果你喜歡它,不要忘記upvote並接受答案。 – juba 2014-10-03 13:13:24

+0

對於R 3.1.1有沒有類似於'stat_bin2d'的東西?我想獲得它的獨立性,因爲我得到警告'> install.packages(「stat_bin2d」)將軟件包安裝到'/ usr/local/lib/R/site-library' (as'lib'is unspecified)Warning message :包'stat_bin2d'不可用(對於R版本3.3.1)' – 2016-11-01 16:15:55

相關問題