플롯 축의 눈금 간격을 변경 하시겠습니까?


답변:


95

기본 그래프 에서이를 달성하는 데는 최소한 두 가지 방법이 있습니다 (제 예는 x 축에 대한 것이지만 y 축에 대해서는 동일하게 작동 함).

  1. 사용 par(xaxp = c(x1, x2, n))또는 plot(..., xaxp = c(x1, x2, n))위치 (하기 정의 x1x2극도의 눈금)과 눈금 사이의 간격의 수를 ( n). 따라서 n+1그려지는 눈금 표시의 수입니다. (대수 눈금을 사용하지 않는 경우에만 작동합니다 ?par. 대수 눈금의 동작은을 참조하십시오 .)

  2. 축 그리기를 완전히 억제하고 나중에를 사용하여 눈금을 추가 할 수 있습니다 axis().
    축 그리기를 억제하려면 plot(... , xaxt = "n").
    그런 다음 전화 axis()side, at그리고 labels: axis(side = 1, at = v1, labels = v2). 함께 side, 축 (1 = x 축, 2 = Y 축)의 측면을 언급 v1진드기 (예를 들어, 위치를 포함하는 벡터 인 c(1, 3, 5)0 내지 6 및 축 범위는 세 개의 표시를 원하는 경우) 및 v2지정된 눈금 표시에 대한 레이블을 포함하는 벡터 ( v1예 : 와 같은 길이 여야 함 c("group a", "group b", "group c")) 참조 ?axis이 방법의 예를 들어 stats.stackexchange의 게시물에 대한 내 업데이트 된 대답 .


R이 숫자 눈금 레이블에 사용하는 소수 자릿수를 제어하는 ​​방법이 있습니까? 방금 labels = c (0.0,0.5,1.0,1.5,2.0) 시도했지만 그래프에서 레이블은 0, 0.5, 1, 1.5 등이었습니다. 모든 레이블에 동일한 소수 자릿수를 표시하는 방법이 있습니까? labels = round (seq (0,2,0.5), 1) 시도했지만 정수에는 여전히 소수 자리가 없습니다.
eipi10 2012

2
함수를 시도 formatC하거나 prettyNum전달할 문자 벡터를 만듭니다 labels. 예 :formatC(seq(0,2,0.5), digits = 1, format = "f")
Henrik

1
+1은 이것을 찾기 위해 잠시 찾고있었습니다. 그것이 n실제로 눈금의 수 이지만 밝혀졌습니다 -1. 에서 1까지 눈금을 원했고 9설정해야했습니다 xaxp = c(1, 9, 8). 그렇지 않으면 원하는 결과를 얻지 못했습니다.
ThomasH

나를 위해 그것은 작동하지 않습니다 par(xaxp..). 나는 안에 넣어 경우에만 작동합니다plot(xaxp...)
다니엘 BONETTI

31

기본 그래픽을 사용하는 가장 쉬운 방법은 그리기 축에서 플로팅 기능을 중지 한 다음 직접 그리는 것입니다.

plot(1:10, 1:10, axes = FALSE)
axis(side = 1, at = c(1,5,10))
axis(side = 2, at = c(1,3,7,10))
box()

안녕하세요 저는 x 축에 datetime 데이터가 있습니다. (chron) 제 경우에는 25 개의 전체 날짜를 사용하여 줄을 작성하는 것보다 더 나은 방법이라고 생각합니다. x 축에 세로로 날짜를 쓰려면 수직을 의미합니다. 환호
skan

1
las에 대한 호출에 추가 할 수 있고 axis()눈금 레이블의 방향을 제어하는 ? par의 그래픽 매개 변수 를 보십시오 . 예 axis(side = 1, at = c(1,5,10), las = 2). axis()chron 객체에 대한 함수 가 있는지 조사 하거나 이미 axis()함수 가있는 R의 Date Time 클래스 사용을 고려할 수 있습니다 (예 : axis.Date()' "Date"'클래스의 경우).
Gavin Simpson

6

시간이 x 축이고 강도가 y 축인 데이터 세트가 있습니다. 먼저 다음을 사용하여 축의 레이블을 제외한 모든 기본 축을 삭제해야합니다.

plot(Time,Intensity,axes=F)

그런 다음 다음을 사용하여 플롯의 요소를 다시 작성합니다.

box() # create a wrap around the points plotted
axis(labels=NA,side=1,tck=-0.015,at=c(seq(from=0,to=1000,by=100))) # labels = NA prevents the creation of the numbers and tick marks, tck is how long the tick mark is.
axis(labels=NA,side=2,tck=-0.015)
axis(lwd=0,side=1,line=-0.4,at=c(seq(from=0,to=1000,by=100))) # lwd option sets the tick mark to 0 length because tck already takes care of the mark
axis(lwd=0,line=-0.4,side=2,las=1) # las changes the direction of the number labels to horizontal instead of vertical.

따라서 at = c(...)눈금을 표시 할 위치 모음을 지정합니다. 여기에 0, 100, 200, ..., 1000에 표시를하고 싶습니다. seq(from =...,to =...,by =...)제한과 증분을 선택할 수 있습니다.


3

R이 소수 또는 0을 추가하지 않도록하려면 ... axt를 사용하여 x 축이나 y 축 또는 둘 다 그리기를 중지 할 수 있습니다. 그런 다음 고유 한 눈금과 레이블을 추가 할 수 있습니다.

plot(x, y, xaxt="n")
plot(x, y, yaxt="n")
axis(1 or 2, at=c(1, 5, 10), labels=c("First", "Second", "Third"))

물론, 변수 flag를 사용하여 프로그래밍 방식으로 켜고 끌 수 yaxt=flag 있지만 표준 레이블을 켜고 설정 flag <- "s"하고 표준 레이블을 원하지 않으면 사용하십시오 flag <- "n" (이것을 추가하면 "S") 찾을 때
클레멘 타인 왕

3

방금 Hmisc 패키지를 발견했습니다 .

데이터 분석, 고급 그래픽, 유틸리티 작업, 샘플 크기 및 검정력 계산, 데이터 세트 가져 오기 및 주석 달기, 결 측값 대치, 고급 테이블 작성, 변수 클러스터링, 문자열 조작, R 객체를 LaTeX로 변환하는 데 유용한 많은 기능이 포함되어 있습니다. 및 html 코드 및 레코딩 변수.

library(Hmisc)    
plot(...)
minor.tick(nx=10, ny=10) # make minor tick marks (without labels) every 10th
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.