[r] ggplot에서 종횡비를 수정하는 방법은 무엇입니까?

내 문서에 맞게 플롯의 크기를 조정하려고하는데 플롯 된 다이어그램이 정사각형이되는 데 어려움이 있습니다.

예:

pdf(file = "./out.pdf", width = 5, height = 5)
p <- ggplot(mydata, aes(x = col1, y = col2))
print(p)
aux <- dev.off()

x와 y의 한계는 동일하지만 결과의 플롯은 정사각형이 아닙니다. R은 주변 패널을 5×5 “로 만들지 만 실제 다이어그램 크기는 신경 쓰지 않습니다.

내 다이어그램을 어떻게 수 있습니까?



답변

에서 ggplot플롯의 화면 비율을 유지하는 메커니즘 추가하는 것입니다 coord_fixed()플롯에 레이어를. 이렇게하면 실제 경계 상자의 모양에 관계없이 플롯 자체의 종횡비가 유지됩니다.

(또한 ggsave결과 플롯을 pdf(); print(p); dev.off()시퀀스가 아닌 pdf / png / etc에 저장 하는 데 사용 하는 것이 좋습니다 .)

library(ggplot2)
df <- data.frame(
    x = runif(100, 0, 5),
    y = runif(100, 0, 5))

ggplot(df, aes(x=x, y=y)) + geom_point() + coord_fixed()

여기에 이미지 설명 입력


답변

특정 종횡비 (예 : 정사각형)를 확인하려면을 사용하십시오 theme(aspect.ratio=1).

Andrie의 대답은 x의 범위가 y의 범위와 같은 경우 부 자연스러운 데이터를 제공하기 때문에 전체 그림을 제공하지 않습니다. 그러나 데이터가 다음과 같으면

df <- data.frame(
  x = runif(100, 0, 50),
  y = runif(100, 0, 5))
ggplot(df, aes(x=x, y=y)) + geom_point() + coord_fixed()

플롯은 다음과 같습니다.

여기에 이미지 설명 입력

coord_fixed () 함수에는 축 비율을 조정하는 인수도 있습니다.

ratio 가로 세로 비율, y / x로 표시

플롯을 다음과 같이 정사각형으로 만들 수 있습니다.

ggplot(df, aes(x=x, y=y)) + geom_point() + coord_fixed(ratio=10)

여기에 이미지 설명 입력

그러나 변수 또는 플롯 영역의 한계로이를 조정해야합니다 (모든 한계가이 예제와 같이 정수로 잘 나눌 수있는 것은 아닙니다).


답변

완전성을 위해 : 매우 다른 축 제한을 고려하려는 경우 :

df <- data.frame(
  x = runif(100, 0, 5000),
  y = runif(100, 0, 5))
ratio.display <- 4/3
ratio.values <- (max(df$x)-min(df$x))/(max(df$y)-min(df$y))
plot <- ggplot(df, aes(x=x, y=y)) + geom_point()
plot + coord_fixed(ratio.values / ratio.display)

를 야기하는:


답변