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


답변:


95

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

  1. 사용 par(xaxp = c(x1, x2, n))또는 plot(..., xaxp = c(x1, x2, n))위치 (하기 정의 x1및 x2극도의 눈금)과 눈금 사이의 간격의 수를 ( 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.