Corrplot heatmap crunched up and unreadable
0
0
Entering edit mode
6 months ago
aropri ▴ 110

I have the following code which created a heatmap for my correlation matrix.

corrplot(cor, method = "circle", type = "full", is.corr = TRUE, p.mat = pAdj, sig.level = 0.05, insig = "label_sig" )


my matrix cor has 816 rows and 11 columns. is there a way I can stretch the heatmap so it is readable. At the moment it looks like this:

Corrplot heatmap • 915 views
0
Entering edit mode

Play around with it. What have you tried to do by yourself before deciding to ask people here?

How is your cor matrix not square? Have you understood what corrplot needs or are you just passing it your raw matrix?

0
Entering edit mode

Looking at your past posts, it looks like you're asking here where you could just be Googling for answers. Please invest some effort and come to us only when you've tried your best.

0
Entering edit mode

Hi Ram,

Thank you for your help. I have tried multiple ways and researching on google. I tried playing with the par function to correct margin size and other ways to stretch out the heatmap. Also, i kept order = "original" since my matrix is not square and yes it is a matrix of correlations. I have tried my best, but I am sorry for the bother and will keep trying. Thank you again for the help.

0
Entering edit mode

The raw 816x11 matrix should work and you should see 11 rows and 11 columns in your corrplot. Your reasoning for order doesn't really make sense - it doesn't matter that your matrix is not square as it looks like the order is applied after internally creating the correlation square matrix.

For starters, try creating the corr matrix yourself. What does cor(the_816_by_11_data) give you? It should give you a 11-by-11 array. I think your data is being transposed somehow into 11 by 816 instead of 816 by 11.

0
Entering edit mode

Hi Ram,

I created the cor matrix myself and then gave it as an input into the corrplot function.

The reason I am confused is because when I plot the upper triangle of the matrix it looks like what I want. However when I do the full matrix plot it gets crunched up. The cor data frame I have is 816 rows by 11 columns data frame.

0
Entering edit mode

Can you show me head(rownames(cor)) and head(colnames(cor))?

0
Entering edit mode
head(rownames(cor))

[1] "1433E_HUMAN" "1433F_HUMAN" "1433G_HUMAN" "1433S_HUMAN" "1433Z_HUMAN" "4F2_HUMAN"

[1] "bam"            "tau"             "Ab40.Mean.Conc." "Ab42.Mean.Conc." "Tau.Mean.Conc."
[6] "NFL.Mean.Conc."

0
Entering edit mode

Try this:

cor2 <- cor
rownames(cor2) <- NULL
corrplot(cor2, ...)

0
Entering edit mode

Tried it out, produces this:

I feel its plotting it fine, its just a large matrix so the figure just needs to be enlarged. Appreciate your help on this and sorry for the bother. I will try it out and if I can not get it, not a big deal.

0
Entering edit mode

Can you show me your full code please? Maybe that'll help debug what's happening. If that doesn't solve it, we can look at your full dataset.

0
Entering edit mode

Sorry for the late response. Here is my code and you truly are helpful. Cannot thank you enough

y = as.matrix(datTraitsProt)  #matrix of trait values
x = as.matrix(norm_prot2)    #matrix of protein expression values

test <- corr.test(x, y, method="spearman", adjust="BH")  # getting correlation #between protein expression and traits

par(mar = c(.1, .1, .1, .1))

pAdj <- test$p.adj # getting FDR adjusted p-values cor <- test$r             # getting correlation values between the two matrices

cor2 <- cor
rownames(cor2) <- NULL

corrplot(cor2, method = "circle", type = "full", is.corr = FALSE, p.mat = pAdj, sig.level = 0.05, insig = "label_sig" )

0
Entering edit mode

This does not make sense to me. I thought you were correlating one matrix's columns against one another, not 2 matrices.

Can you show me the output to:

xsub1 <- as.matrix(datTraitsProt[1:5,1:5])
ysub1 <- as.matrix(norm_prot2[1:5,1:5])
corrsub1 <- corr.test(xsub1, ysub1, ...) #other params from your call
corrsub1$p.adj corrsub1$r

0
Entering edit mode

0
Entering edit mode

I think the matrix is just too big for it to be readable. Because the code the you asked me to give the output gives the plot perfectly fine.