Построение формы под размер окна

контекст

Этот вопрос является частью проекта по построению генетических карт в R. Распространенным представлением является "масштаб" горизонтальной черты, ограниченной двумя полукругами. Пример генетической карты. Генетические карты представляют собой последовательность положений.

Цель

Я пытаюсь сделать полукруг, соответствующий "лестницам шкалы", с регулируемой высотой, чтобы он всегда выглядел как круг, а не как какая-то овальная форма.

Актуальный код

library(ggforce)  
df <- data.frame(position=rnorm(n=15)*10)  
ggplot(aes(xmin=-2.5,ymin=position-0.1,xmax=2.5,ymax=position+0.1),data=df)+  
geom_rect() +  
geom_arc_bar(aes(x0 = 0, y0 = max(position), r0 = 0, r = 2.5, start =-pi/2,end = pi/2), color = "grey20")+  
geom_arc_bar(aes(x0 = 0, y0 = min(position), r0 = 0, r = 2.5, start = pi/2,end = 3*pi/2), color = "grey20")  

введите описание изображения здесь

Вопрос

Итак, мой вопрос: как сделать реактивное масштабирование фигуры в соответствии с размером окна просмотра Rplot, чтобы фигура всегда выглядела как круг и оставалась ссылкой на мою верхнюю "лестницу"?

Пытаться

Я могу вручную отрегулировать размер графика так, чтобы x.axis и y.axis имели одинаковый масштаб перед экспортом графика, но это не совсем эффективно и станет очень сложно, если у меня несколько хромосом на одном графике.
Я был бы рад ответить на комментарии, если это необходимо, и надеюсь, что мой вопрос достаточно ясен!

1 ответ

Решение

coord_fixed убедитесь, что x а также y всегда масштабируются 1:1, даже при масштабировании графика.

ggplot(aes(xmin=-2.5,ymin=position-0.1,xmax=2.5,ymax=position+0.1),data=df)+  
  geom_rect() +  
  geom_arc_bar(aes(x0 = 0, y0 = max(position), r0 = 0, r = 2.5, start =-pi/2,end = pi/2), color = "grey20")+  
  geom_arc_bar(aes(x0 = 0, y0 = min(position), r0 = 0, r = 2.5, start = pi/2,end = 3*pi/2), color = "grey20") +
  coord_fixed()

Другие вопросы по тегам