在ggplot2中用网格绘制一个正方形

时间:2019-07-08 22:18:10

标签: r ggplot2 r-grid

我正在尝试创建自己的geom。在屏幕上,无论缩放比例如何,几何图形应始终为正方形。给定值wh(用于宽度和高度)(由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进行同样的操作。有可能吗?

我想做的事情:我想做一个小图,在某些情况下,它必须正好是一个正方形,否则看起来很难看。

0 个答案:

没有答案