2016-08-26 2 views
2

일반적으로 ggplot2에서 연속 변수의 크기 나누기를 scale_y_continuous (또는 scale_x_continuous)으로 변경했습니다. 또한 일반적으로 coord_cartesian(xlim=) (또는 y 축에 대해 ylim=)을 사용하여 축 제한을 설정합니다. 처럼 잘 작동하는 모든 다음ggplot2의 x 축과 y 축 모두에 수동으로 나누기 추가

enter image description here

내가 x 축 말에를 조정하려면, 1 : 기본 비늘 다음 플롯을 생성

#Some example data 
set.seed(100) 
b<-sample(1:10, 10) 
a<-sample(1:10, 10) 

df<-data.frame(a,b) 

#Graph without scales set (just default) 
library(ggplot2) 
ggplot(data=df, aes(a,b))+ 
    theme_bw() + theme(panel.border = element_rect(colour = "black", fill=NA, size=1), 
        panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(), 
        axis.line = element_line(colour = "black"))+ 
    geom_text(aes(label=rownames(df)), color="black") 

13 (즉, 13 눈금의 1에서 시작하여 13에서 끝나는) 다음 작업을 수행 할 것입니다 :

ggplot(data=df, aes(a,b))+ 
    theme_bw() + theme(panel.border = element_rect(colour = "black", fill=NA, size=1), 
        panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(), 
        axis.line = element_line(colour = "black"))+ 
    geom_text(aes(label=rownames(df)), color="black")+ 
    scale_x_continuous(breaks = c(1,3,5,7,9,11,13))+ 
    coord_cartesian(xlim=c(0, 13)) 

enter image description here

을 I 동시에 두 축의 매우 동일한 스케일 조정을 수행 할 때

ggplot(data=df, aes(a,b))+ 
    theme_bw() + theme(panel.border = element_rect(colour = "black", fill=NA, size=1), 
        panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(), 
        axis.line = element_line(colour = "black"))+ 
    geom_text(aes(label=rownames(df)), color="black")+ 
    scale_y_continuous(breaks = c(1,3,5,7,9,11,13))+ 
    coord_cartesian(ylim=c(0, 13)) 
그러나

enter image description here

, 출력하지 ... 및 y 축

617,451,515,... 내가 기대하는 것 (x 축과 y 축 모두 1-13)을 생성하지 않습니다. 당신이 볼 수 있듯이

ggplot(data=df, aes(a,b))+ 
    theme_bw() + theme(panel.border = element_rect(colour = "black", fill=NA, size=1), 
        panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(), 
        axis.line = element_line(colour = "black"))+ 
    geom_text(aes(label=rownames(df)), color="black")+ 
    scale_y_continuous(breaks = c(1,3,5,7,9,11,13))+ 
    coord_cartesian(ylim=c(0, 13))+ 
    scale_x_continuous(breaks = c(1,3,5,7,9,11,13))+ 
    coord_cartesian(xlim=c(0, 13)) 

enter image description here

는, x 및 y 축이 동일한 코드가 양 축에 전달 된 경우에도 해당하지 않습니다. 나는 왜 그런지 이해하지 못한다. 어떤 도움이라도 대단히 감사합니다.

+1

확실하지만 코드 (내 나쁜)의 한 줄을 추가하는 것을 잊었다하지 , b)''나는 위의 예제에서 그것을 고쳤다 –

답변

3
set.seed(100) 
df <- data.frame(b = sample(1:10, 10), a = sample(1:10, 10))  


ggplot(data=df, aes(a,b))+ 
theme_bw() + theme(panel.border = element_rect(colour = "black", fill=NA, size=1), 
        panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(), 
        axis.line = element_line(colour = "black")) + 
geom_text(aes(label=rownames(df)), color="black") + 
scale_y_continuous(breaks = c(1,3,5,7,9,11,13)) + 
scale_x_continuous(breaks = c(1,3,5,7,9,11,13)) + 
coord_fixed(ylim=c(0, 13),xlim=c(0, 13)) 

enter image description here

+0

아. 나는''coord_fixed''를 보았다. 고마워! –

2

scale_*_continuous 기능이 limits 매개 변수를 대신 coord_cartesian의 사용할 수 있습니다

ggplot(data=df, aes(a,b))+ 
    theme_bw() + theme(panel.border = element_rect(colour = "black", fill=NA, size=1), 
         panel.grid.major = element_blank(), 
         panel.grid.minor = element_blank(), 
         axis.line = element_line(colour = "black"))+ 
    geom_text(aes(label=rownames(df)), color="black")+ 
    scale_y_continuous(breaks = c(1,3,5,7,9,11,13), limits = c(0, 13)) + 
    scale_x_continuous(breaks = c(1,3,5,7,9,11,13), limits = c(0, 13)) 

plot with proper limits

... 또는 coord_cartesian와 함께 그 일을 주장하는 경우, 한 번의 호출로 처리하십시오. 그렇지 않으면 그래프를 자르고 다시 자릅니다. 이것이 문제의 원인입니다. ``DF <-data.frame (A : 그냥 데이터 프레임은``a``와``b``를 수집

ggplot(data=df, aes(a,b))+ 
    theme_bw() + theme(panel.border = element_rect(colour = "black", fill=NA, size=1), 
         panel.grid.major = element_blank(), 
         panel.grid.minor = element_blank(), 
         axis.line = element_line(colour = "black"))+ 
    geom_text(aes(label=rownames(df)), color="black")+ 
    scale_y_continuous(breaks = c(1,3,5,7,9,11,13))+ 
    scale_x_continuous(breaks = c(1,3,5,7,9,11,13))+ 
    coord_cartesian(xlim=c(0, 13), ylim = c(0, 13)) 
# returns the same thing 
관련 문제