Nível de significância adicionado ao mapa de calor de correlação de matriz usando ggplot2

Gostaria de saber como é possível adicionar outra camada de complexidade importante e necessária a um mapa de calor de correlação matricial como, por exemplo, o valor p após a maneira das estrelas do nível de significância além do valor R2 (-1 a 1)?
NÃO foi PRETENDIDO nesta questão colocar estrelas de nível de significância OU os valores de p como texto em cada quadrado da matriz, MAS em vez disso, mostrar isso em uma representação gráfica fora da caixa do nível de significância em cada quadrado da matriz. Acho que apenas aqueles que desfrutam da bênção do pensamento INOVADOR podem ganhar o aplauso para desvendar esse tipo de solução, a fim de ter a melhor maneira de representar esse componente adicional de complexidade em nossos "heatmaps de correlação de matriz de meia-verdade". Eu pesquisei muito, mas nunca vi um bom ou vou dizer uma maneira "olho-friendly" para representar o nível de significância mais as cores de cor padrão que refletem o coeficiente R.
O conjunto de dados reproduzíveis é encontrado aqui:
http://learnr.wordpress.com/2010/01/26/ggplot2-quick-heatmap-plotting/
O código R, por favor, veja abaixo:

library(ggplot2)
library(plyr) # might be not needed here anyway it is a must-have package I think in R 
library(reshape2) # to "melt" your dataset
library (scales) # it has a "rescale" function which is needed in heatmaps 
library(RColorBrewer) # for convenience of heatmap colors, it reflects your mood sometimes
nba <- read.csv("http://datasets.flowingdata.com/ppg2008.csv")
nba <- as.data.frame(cor(nba[2:ncol(nba)])) # convert the matrix correlations to a dataframe 
nba.m <- data.frame(row=rownames(nba),nba) # create a column called "row"
rownames(nba) <- NULL #get rid of row names
nba <- melt(nba)
nba.m$value<-cut(nba.m$value,breaks=c(-1,-0.75,-0.5,-0.25,0,0.25,0.5,0.75,1),include.lowest=TRUE,label=c("(-0.75,-1)","(-0.5,-0.75)","(-0.25,-0.5)","(0,-0.25)","(0,0.25)","(0.25,0.5)","(0.5,0.75)","(0.75,1)")) # this can be customized to put the correlations in categories using the "cut" function with appropriate labels to show them in the legend, this column now would be discrete and not continuous
nba.m$row <- factor(nba.m$row, levels=rev(unique(as.character(nba.m$variable)))) # reorder the "row" column which would be used as the x axis in the plot after converting it to a factor and ordered now
#now plotting
ggplot(nba.m, aes(row, variable)) +
geom_tile(aes(fill=value),colour="black") +
scale_fill_brewer(palette = "RdYlGn",name="Correlation")  # here comes the RColorBrewer package, now if you ask me why did you choose this palette colour I would say look at your battery charge indicator of your mobile for example your shaver, won't be red when gets low? and back to green when charged? This was the inspiration to choose this colour set.

O mapa de calor de correlação de matrizes deve ter esta aparência:

Sugestões e ideias para melhorar a solução:
- Este código pode ser útil para ter uma ideia sobre o nível de significância das estrelas tiradas deste website:
http://ohiodata.blogspot.de/2012/06/correlation-tables-in-r-flagged-with.html
Código R:

mystars <- ifelse(p < .001, "***", ifelse(p < .01, "** ", ifelse(p < .05, "* ", " "))) # so 4 categories  

- O nível de significância pode ser adicionado como intensidade de cor a cada quadrado como a estética alfa, mas não acho que isso será fácil de interpretar e capturar
- Outra ideia seria ter 4 tamanhos diferentes de quadrados correspondentes às estrelas, obviamente dando o menor ao não significante e aumentando para um quadrado maior se as estrelas mais altas
- Outra ideia para incluir um círculo dentro desses quadrados significativos e a espessura da linha do círculo corresponde ao nível de significância (as 3 categorias restantes) todas elas de uma só cor
- O mesmo que acima, mas fixando a espessura da linha, dando 3 cores para os 3 níveis significantes restantes
- Pode ser que você venha com ideias melhores, quem sabe?

questionAnswers(2)

yourAnswerToTheQuestion