2017-10-20 22 views
0

내가 데이터 프레임을 가지고

df <- melt(iris) 

p <- ggplot(data = df, aes(x = Species, y = value)) + 
     geom_boxplot() + theme(aspect.ratio = 1) 

내가 다음이의 PDF 파일을 저장 ggsave()를 사용하려는 음모를 만들고 싶어 말 레이블 줄거리는

ggsave(plot = p, width = 3, height = 3, dpi = 300, filename = "not squished axis.pdf") 

enter image description here

문제 내가하지만 독립적으로 줄거리가 w 이하로 지정되도록 축 레이블의 플롯 자체의 크기를 지정하려는 것입니다 병의 절대 길이와 관련하여 동일한 크기와 치수를 갖는다.

q <- ggplot(data = df, aes(x = Species, y = (value)*10000000)) + 
     geom_boxplot() + theme(aspect.ratio = 1) 

ggsave(plot = q, width = 3, height = 3, dpi = 300, filename = "squished axis.pdf") 

enter image description here

쉽게 할 수있는 방법이 있나요? 여기

내가 축 길이의 관점에서 싶은 것이 가까이 플롯의 일례이다

enter image description here

유일한 문제는 종횡비를 변경함으로써, I는 예를 찌그러 결국이다 x 축을 길이에 더 가깝게 만드는 축 ...

+0

내가 질문을 이해하지 않는 작업을 수행 할 수 있습니다. "축 레이블과 독립적"이란 의미는 무엇입니까? 'ggsave'에서'height'와'width'를 지정하면 플롯 *은 같은 치수 (픽셀/인치)와 (데이터에 따라) 다른 축 범위를 갖게됩니다. 달성하고자하는 모형 또는 샘플 그림을 포함시킬 수 있습니까? –

+0

축의 절대 길이는 y 축 구분 레이블이 첫 번째 플롯보다 두 번째 플롯에서 더 길기 때문에 위의 두 플롯에서 다릅니다. 다른 길이 축 레이블을 가질 수 있지만 동일한 x 축과 y 축 길이를 유지할 수 있기를 원합니다. 나는 내가 얻고 자하는 것에 더 가깝게 보이는 세 번째 플롯으로 질문을 업데이트했다. –

+0

@MauritsEvers 내가 원하는 것의 대표적인 플롯을 만드는 데 문제가있다. 본질적으로 나는 그래프 영역의 크기를 원한다., x 축과 y 축의 인치 단위 길이)보다 긴 형식의 번호 매기기 결과로 y 축에 대해 더 긴 레이블을 갖는 플롯간에 일관성을 유지하십시오. –

답변

0

나는 당신이 뭘하고 있는지 정말로 이해하지 못하기 때문에 이것은 어둠 속에서 조금 찌르다.

# Your sample data 
df <- list(
    one = melt(iris), 
    two = with(melt(iris), cbind.data.frame(Species, variable, value * 1000))); 
df <- melt(df); 

ggplot(df, aes(x = Species, y = value)) + 
    geom_boxplot() + theme(aspect.ratio = 1) + 
    facet_wrap(~ L1); 

enter image description here

을 또는 Y 스케일은 모든면 자유롭게 변화 할 수 있습니다 :

당신은 facet_wrap를 사용하여 동일한 척도를 사용하여 두 개의 플롯을 표시 할 수 있습니다.

enter image description here

ggplot(df, aes(x = Species, y = value)) + 
    geom_boxplot() + theme(aspect.ratio = 1) + 
    facet_wrap(~ L1, scales = "free_y"); 
을 조정할 수 있습니다 nrowncol를 사용하여 열 또는 행의 수를 지정하여면의 그리드 레이아웃.

그래서 예를 들어, 두 플롯의 수직 배치를 위해 당신은

ggplot(df, aes(x = Species, y = value)) + 
    geom_boxplot() + theme(aspect.ratio = 1) + 
    facet_wrap(~ L1, ncol = 1, scales = "free_y"); 

enter image description here

+0

감사합니다. 그렇습니다. 패싯 랩은 결과적으로 플로팅 공간을 만듭니다. 그러나 실제로는 플로트를 개별적으로 만들고 싶습니다. 마지막 예제를 참조로 사용하여 8000, 6000, 4000 등 값이 8, 6, 4 등보다 더 확장 되더라도 두 플롯의 회색 그리기 영역이 같은 길이인지 알아보십시오. 그러나 가능한 한 내 예제에서 볼 때 이러한 PDF 파일을 ggsave하면 x 축의 길이가 y 축 값의 길이를 수용하기 위해 부각됩니다. –

+0

ggsave()로 저장할 플롯의 "높이"및 "너비"치수를 지정하지 않으면 축 레이블이 플롯 영역을 스 팅하는 것을 방지하는 측면에서 원하는 점을 얻지 만 모든 플롯을 저장해야합니다 플롯 영역 (x 축의 길이와 y 축의 길이)이 특정 길이가되도록 –

+0

나는 최선의 방법은'facet_wrap'입니다. 솔직히 말하면, 당신의 계획 요구 사항은 나에게 매우 이상하게 보입니다. 그것은 순수하게 미적 문제로 보인다. 'facet_wrap'으로 쉽게 해결할 수있는 것. 어떤 이유로 사용하고 싶지 않습니다. 어쨌든. 행운을 빈다, 나는 더 이상 도움을 줄 수 없다. –