我有以下数据集和代码来构建数据框中每对变量的2d密度等值线图。我的问题是ggpairs()中是否有一种方法可以确保不同变量对的比例相同,例如ggplot2中不同构面的相同比例。例如,我希望每个图片的x比例和y比例都来自[-1,1]。
提前致谢!
情节看起来像
intersection
答案 0 :(得分:2)
我不确定这是否可以直接从ggpairs函数中获取,但你可以从ggpairs中提取一个图并修改它然后保存回来。
此示例循环遍历绘图矩阵的下三角形,并替换现有的x和y轴刻度。
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
看起来像这样
和pm2
看起来像这样
要解决您的问题,您需要遍历整个绘图矩阵,并将x和y刻度设置为-1到1的限制。
答案 1 :(得分:1)
我在ggpairs
中找到了一种方法,它使用自定义函数创建图形
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
使用这种功能,它可以像任何ggplot一样自定义!