Нарисуйте квадрат с сеткой в ​​ggplot2 - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь создать свой собственный геом. На экране геом всегда должен быть квадратом, независимо от масштаба. Учитывая значения w и h (для ширины и высоты), преобразованные ggplot из пользовательских координат в координаты сетки, идея состоит в том, чтобы сжать одно из них таким образом, чтобы на экране аспект получающегося прямоугольника был точно равен час Если 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]

Однако мне трудно понять, как сделать то же самое с сеткой. Возможно ли это?

Что я хочу сделать: я хочу сделать небольшой сюжет-сюжет, который в некоторых случаях должен быть точно квадратным, в противном случае это выглядит некрасиво.

...