Reputation: 539
I am using the corrplot
function which is part of the corrplot
package in R
to visualise correlations between channels of data that I have. My question is whether I could possibly assign two "factors" or parameters to the circle... So, for example, could I have the size of the circle representing the correlation and the colour of the circle represents something else for example lags? My data is actually cross-correlation data where I have identified the maximum correlation/lag and want to be able to visualise both in a figure, that's why I want to do this.
Essentially what I am trying to achieve is the same as in this question: R: using corrplot to visualize two variables (e.g., correlation and p-value) using the size and colour of the circles, however, neither of the solutions are working for me and I get an error when installing the packages from Github.
I have a vectors of lags and correlations:
CCO_lag = (0, NaN , -2 , NaN , -5 , -4 , -6 , -3 , 0 , NaN , 1 , 3 , NaN , 0 , -3 , NaN)
CCO_r = c(-0.4757 , NaN , 0.5679 , NaN , 0.5582 , 0.5899 , 0.5857 , 0.6256 , -0.4646 , NaN , -0.6286 , -0.4699 , NaN , -0.7710 , 0.5869 , NaN `)
And let's say I want to visualise this in a 1x16
square using corrplot
I want the size of the circles to depend on the correlation value in CCO_r
while the colour of the circles to depend on the lag value in CCO_lag
.
Can anyone help?
Thanks!
Upvotes: 0
Views: 588
Reputation: 145775
This doesn't seem much like a correlation plot to me, but we can do this:
CCO_lag = c(0, NaN , -2 , NaN , -5 , -4 , -6 , -3 , 0 , NaN , 1 , 3 , NaN , 0 , -3 , NaN)
CCO_r = c(-0.4757 , NaN , 0.5679 , NaN , 0.5582 , 0.5899 , 0.5857 , 0.6256 , -0.4646 , NaN , -0.6286 , -0.4699 , NaN , -0.7710 , 0.5869 , NaN )
d = data.frame(id = 1:length(CCO_lag), CCO_lag, CCO_r)
ggplot(d, aes(x = id, y = "A", size = CCO_r, color = CCO_lag)) +
geom_point() +
scale_y_discrete(breaks = NULL) +
labs(y = "", x = "")
If you've got matrices:
lag_mat = matrix(CCO_lag, 4)
r_mat = matrix(CCO_r, 4)
row = c(row(lag_mat))
col = c(col(lag_mat))
dd = data.frame(
lag = c(lag_mat), r = c(r_mat), row, col
)
ggplot(dd, aes(x = row, y = col, size = r, color = lag)) +
geom_point() +
theme(panel.grid = element_blank())
Note that matrices have row 1 on top, with higher-numbered rows below, but plots have the lower y values on the bottom, with higher-numbered y values above. You may want to change that or it may be fine. You can add scale_y_reverse()
to your plot to switch it.
Upvotes: 1