How to set the same scale in different faces using ggpairs ()

I have the following data set and codes for plotting a 2d density contour graph for each pair of variables in a data frame. My question is, is there a way in ggpairs () to make sure that the scales are the same for different pairs of variables, such as the same scale for different faces in ggplot2. For example, I would like the x scale and y scale to be from [-1, 1] for each image.

Thanks in advance!

The plot looks like enter image description here

library(GGally) ggpairs(df,upper = list(continuous = "density"), lower = list(combo = "facetdensity")) #the dataset looks like print(df) xyzw 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 
+9
r ggplot2 ggally
source share
2 answers

I'm not sure if this is possible from the ggpairs function, but you can extract the plot from ggpairs and change it and then save it back.

This example intersects the lower triangle of the graph matrix and replaces the existing x-axis and y-axis scales.

 data(tips, package = "reshape") ## pm is the original ggpair object pm <- ggpairs(tips[,c("total_bill", "tip", "size")]) ## pm2 will be modified in the loop pm2 <- pm for(i in 2:pm$nrow) { for(j in 1:(i-1)) { pm2[i,j] <- pm[i,j] + scale_x_continuous(limits = c(-5, 75)) + scale_y_continuous(limits = c(-5, 10)) } } 

pm as follows

enter image description here

and pm2 as follows

enter image description here

To solve your problem, you should go through the entire matrix of graphs and set the scales from -1 to 1 for the x and y scales.

+2
source share

I found a way to do this in ggpairs which uses a custom function to create graphs

 df <- read.table("test.txt") upperfun <- function(data,mapping){ ggplot(data = data, mapping = mapping)+ geom_density2d()+ scale_x_continuous(limits = c(-1.5,1.5))+ scale_y_continuous(limits = c(-1.5,1.5)) } lowerfun <- function(data,mapping){ ggplot(data = data, mapping = mapping)+ geom_point()+ scale_x_continuous(limits = c(-1.5,1.5))+ scale_y_continuous(limits = c(-1.5,1.5)) } ggpairs(df,upper = list(continuous = wrap(upperfun)), lower = list(continuous = wrap(lowerfun))) # Note: lower = continuous 

With such a function, it is configured like any ggplot!

Graph

0
source share

All Articles