2014-08-27 4 views
0

플롯에서 여러 개의 세그먼트를 그려야합니다. 세그먼트() 함수를 시도했지만 주어진 좌표 중 두 개의 세그먼트 만 그립니다. 여기서 코드 :플롯의 세그먼트

begs <- c(34573131,35072050,35471145, 35746065,36504818) 
    ends <- c(34887083,35139735,35557793,35789178,36950091) 
    step <- 820000 

    plot(1, xlim = c(33900000,38000000), axes = F, xlab="Position") 
    axis(1, at = seq(33900000,38000000, by=step), labels=format(seq(33900000,38000000, by=step)/1e6, scientific=F, digits=3)) 
    axis(4, at = seq(0,2,length.out = 5), labels = seq(0,2,length.out = 5)) 
    segments(x0 = begs, x1 = ends, y0 = c(0.1, 0.5 , 0.9 ,1.4, 1.9)) 

및 플롯은 같다 : 는 segments

+1

귀하의 y 축이 긴 것만으로는 충분하지 않습니다. 'ylim = c (0,2)'를'plot()'명령에 추가하십시오. –

답변

1

plot()에 첫 번째 통화가 x와 y의 범위를 계산하는 R시킨다. 따라서이 첫 번째 통화의 데이터가 범위를 나타내지 않는 경우 수동으로 범위를 지정해야합니다.

구체적으로는, 당신의 plot() 전화에 ylim=c(...)을 추가

이 시도 :

min <- 33900000 
max <- 38000000 

plot(1, xlim = c(min, max), ylim=c(0, 2), 
    axes = FALSE, xlab="Position", ylab="", type="n") 

axis(1, at = seq(min, max, by=step), labels=format(seq(min, max, by=step)/1e6, 
    scientific=F, digits=3)) 
axis(4, at = seq(0,2,length.out = 5), labels = seq(0,2,length.out = 5)) 
segments(x0 = begs, x1 = ends, y0 = c(0.1, 0.5 , 0.9 ,1.4, 1.9)) 

enter image description here