There are a number of issues here (and whether you use ggplot2
strikes me as entirely orthogonal to them). First, recognize that that correlations don't necessarily scale in an intuitive, 'linear' manner (in large part because their possible range is bounded). It's worth thinking about how you want to represent the values. For example, you could use:
- the original correlations ($r$-scores)
- coefficients of determination ($r^2$'s)
- $z$-scores based on the results of Fisher's '$r$ to $z$' transformation:
$$z_r = .5\ln\! \bigg(\frac{1+r}{1-r}\bigg)$$
I don't really know anything about your situation, so it's hard for me to say, but my default would be to use the transformed scores ($z_r$).
Next, you need to decide what about the data you want to include (at all, or more or less prominently). For example, do you want to include the absolute magnitudes of the values, or only their changes (cf., levels vs. changes in economics)? Do you primarily care about the magnitudes of the changes (i.e., absolute values), whether they are increases or decreases (the signs, either in an absolute sense, or towards or away from no correlation), or both?
Given that you want to visualize a correlation matrix (i.e., a set of correlations), it is worth remembering that they won't be independent. Consider that a change in only one variable will have an effect on multiple correlations, even if the other variables are constant over time. So again, it depends on whether that matters for you.
In other words, figuring out exactly what you really care about is vital. There won't be a visualization that will capture all of these facets.
From your comment, I gather you will have just two correlation matrices, before and after. That simplifies things. Again, without any information about your situation, data, or goals, I would probably make a scatterplot with before and after on the X-axis, and $z_r$ on the Y-axis, and the two points representing the same correlation joined by a line segment. Consider this example, coded in R:
library(MASS) # we'll use these packages
library(psych)
set.seed(541) # this makes the example exactly reproducible
bef = mvrnorm(100, mu=rep(0, 5), Sigma=rbind(c(1.0, 0.0, 0.0, 0.0, 0.0),
c(0.0, 1.0, 0.4, 0.0, 0.5),
c(0.0, 0.4, 1.0, 0.1, 0.0),
c(0.0, 0.0, 0.1, 1.0, 0.8),
c(0.0, 0.5, 0.0, 0.8, 1.0) ))
aft = mvrnorm(100, mu=rep(0, 5), Sigma=rbind(c(1.0, 0.0, 0.0, 0.0, 0.0),
c(0.0, 1.0, 0.4, 0.0, 0.5),
c(0.0, 0.4, 1.0, 0.1, 0.0),
c(0.0, 0.0, 0.1, 1.0, 0.8),
c(0.0, 0.5, 0.0, 0.8, 1.0) ))
aft[,5] = rnorm(100) # above I generate data 2x from the same population,
b.c = cor(bef) # here I change just 1 variable
a.c = cor(aft) # then I make cor matrices, & extract the rs into a vector
b.v = b.c[upper.tri(b.c)]
a.v = a.c[upper.tri(a.c)]
d = stack(list(bef=b.v, aft=a.v))
d$ind = relevel(d$ind, ref="bef")
windows(width=7, height=4)
layout(matrix(1:2, nrow=1))
plot(as.numeric(d$ind), fisherz(d$values), main="Fisher's z",
axes=F, xlab="time", ylab=expression(z [r]), xlim=c(.5,2.5))
box()
axis(side=1, at=1:2, labels=c("before","after"))
axis(side=2, at=seq(-.2,1.5, by=.2), cex.axis=.8, las=1)
for(i in 1:10){ lines(1:2, matrix(fisherz(d$values), nrow=10, ncol=2)[i,]) }
plot(as.numeric(d$ind), d$values, main="Raw rs",
axes=F, xlab="time", ylab="r", xlim=c(.5,2.5))
box()
axis(side=1, at=1:2, labels=c("before","after"))
axis(side=2, at=seq(-.2,1.0, by=.2), cex.axis=.8, las=1)
for(i in 1:10){ lines(1:2, matrix(d$values, nrow=10, ncol=2)[i,]) }; rm(i)
fdif = abs(fisherz(a.c)-fisherz(b.c))
diag(fdif) = 0
windows()
image(1:5, 1:5, z=fdif,
xlab="", ylab="", col=gray.colors(8)[8:3])
for(i in 1:5){ for(j in 1:5){ text(i,j,round(fdif,2)[i,j]) }}

The figures above display both the levels of the correlations and the amount of change. You can see various features, such as a convergence towards $r=0$. The difference between using $z_r$ and $r$ is that the $r$-scores are more uniformly distributed beforehand. The distance between $0$ and $.4$ is the same as the distance between $.4$ and $.8$, for example. On the other hand, for $z_r$, the correlations that are close to $0$ are clumped together and the strong correlation is much further out from the rest. What those figures don't capture is the non-independence of those lines. You can see in the heatmap below (using absolute values of the differences in $z_r$'s) that the larger changes are associated with variable 5.

Update: @whuber has detailed a method to compare covariance matrices based on a new paper (as of 6/2/20) here: Diagnostic plot for assessing homogeneity of variance-covariance matrices