Assuming I have the posterior samples for each of the four parameters. My question is how to plot the pairwise marginal distribution on a grid of 4*4=16 with ggplot2?

The easiest solution I find is to use ggpairs() from GGally package in R. The original post is at stackoverflow.

I paste the toy sample dataset named “df” which is a data.frame with four variables x, y, z, w below:

The code using ggpairs() is below:

library(GGally)
ggpairs(df,
upper = list(continuous = "density"),
lower = list(combo = "facetdensity"))
print(df)
# x y z w
#1 0.49916998 -0.07439680 0.37731097 0.0927331640
#2 0.25281542 -1.35130718 1.02680343 0.8462638556
#3 0.50950876 -0.22157249 -0.71134553 -0.6137126948
#4 0.28740609 -0.17460743 -0.62504812 -0.7658094835
#5 0.28220492 -0.47080289 -0.33799637 -0.7032576540
#6 -0.06108038 -0.49756810 0.49099505 0.5606988283
#7 0.29427440 -1.14998030 0.89409384 0.5656682378
#8 -0.37378096 -1.37798177 1.22424964 1.0976507702
#9 0.24306941 -0.41519951 0.17502049 -0.1261603208
#10 0.45686871 -0.08291032 0.75929106 0.7457002259
#11 -0.16567173 -1.16855088 0.59439600 0.6410396945
#12 0.22274809 -0.19632766 0.27193362 0.5532901113
#13 1.25555629 0.24633499 -0.39836999 -0.5945792966
#14 1.30440121 0.05595755 1.04363679 0.7379212885
#15 -0.53739075 -0.01977930 0.22634275 0.4699563173
#16 0.17740551 -0.56039760 -0.03278126 -0.0002523205
#17 1.02873716 0.05929581 -0.74931661 -0.8830775310
#18 -0.13417946 -0.60421101 -0.24532606 -0.1951831558
#19 0.11552305 -0.14462104 0.28545703 -0.2527437818
#20 0.71783902 -0.12285529 1.23488185 1.3224880574

You can see the plot produced by ggpairs() by clicking the following link:

samplePlot

The upper triangle denotes the estimated joint kernel density estimation and the lower triangle shows the scatter plot of the pair of variables and the diagonal elements shows the density estimation for each variable itself.

### Like this:

Like Loading...

*Related*

Thank you so much for putting such a post which was so useful for me. It’s about one day that I’m looking for a way to plot such a diagram in R and I couldn’t. Finally I found your solution. Do you know how I can define confidence limits for contours? I only need two line of each contour related to 68 and 95 percent confidence limits.

LikeLike

Hi,

Thank you for your encouraging comments. I searched a little, for ggpair() function, I am not aware of an easy solution. However, you can achieve this goal using ggplot2 or lattice based on this post:

http://stackoverflow.com/questions/15075157/plot-95-confidence-limits-in-scatterplot

If you like the arrangement of ggpair() , you can custom the plot in each grid, I remember the instructions should be found from the documentation of GGally.

LikeLike