我正在尝试创建自己的geom。在屏幕上,无论缩放比例如何,几何图形应始终为正方形。给定值w
和h
(用于宽度和高度)(由ggplot从用户坐标转换为网格坐标),其思想是缩小其中一个,以便在屏幕上显示所得矩形的长宽比完全是w / h。如果w == h,我们得到一个平方。
在基础R中,可以通过咨询par("pin")
来做到这一点:
## w and h are box width and height in user coordinates
## if w == h, we will should get a square
aspect <- 1 # change to get a rectangle with a given aspect ratio
pp <- par("pin")
pu <- par("usr")
pu <- c(pu[2]-pu[1], pu[4]-pu[3])
ppu <- pp/pu
wi <- w * ppu[1] # box width in inches
hi <- h * ppu[2] # box height in inches
if(wi > hi * aspect) {
wi <- hi * aspect
} else {
hi <- wi / aspect
}
w <- wi / ppu[1]
h <- hi / ppu[2]
但是,我很难弄清楚如何对grid进行同样的操作。有可能吗?
我想做的事情:我想做一个小图,在某些情况下,它必须正好是一个正方形,否则看起来很难看。