2011-09-28 4 views
13

간단한 바 plot 만들기 위해 노력하고 있지만 x 축에 중복 된 이름이 문제가 있습니다. 그래서 x 축에 이름을 쓰려고 할 때 완전한 문자열을 표시하지 않습니다. 나는 데이터 중복 된 이름으로 x 축에 barplot에 레이블을 쓰는 방법은 무엇입니까?

x <- c(1.8405917,0.3265986,1.5723623,464.7370299,0.0000000,3.2235716, 
     3.1223534, 7.0999787, 1.7122258,3.2005524,3.7531266,469.4436828) 

다음하고 난 barplot

barplot(x,xlab=c("AA/AA","AA/CC","AA/AC","AA/NC","CC/AA","CC/CC","CC/AC", 
       "CC/NC","AC/AA","AC/CC","AC/AC","AC/NC")) 

을 사용하고 있습니다하지만이 작동하지 않습니다. 나는 또한 사용했다

axis() 

그러나 그것은 또한 잘되지 않는다.

미리 감사드립니다.

+0

하면 오류 메시지가 표시됩니까? –

답변

20

아니요, xlab은 플롯의 전체 x 축에 레이블을 제공하고 개별 막대에 레이블을 지정하는 것이 아닙니다.

barplot()은 그려진 벡터의 이름 (또는 일련의 이름으로 도출 될 수있는 것)에서 막대의 레이블을 가져옵니다.

> names(x) <- c("AA/AA", "AA/CC", "AA/AC", "AA/NC", "CC/AA", "CC/CC", "CC/AC", 
+    "CC/NC", "AC/AA", "AC/CC", "AC/AC", "AC/NC") 
> barplot(x) 
> ## or with labels rotated, see ?par 
> barplot(x, las = 2) 

편집 : @Aaron 언급으로 barplot()도 바의 라벨을 공급하는 names.arg 있습니다. 이름의 벡터 바의 각 줄이나 그룹 아래 작성하려는

names.arg: :이 ?barplot 말을하는 것입니다. 이 인수가 생략 된 경우 속성의 이름은 이거나 매트릭스 인 경우 이거나 열 이름 인 경우 height입니다.

names.arg이 제공되지 않은 경우 기본 동작을 설명하며 이는 플롯 된 객체에서 이름을 가져 오는 것입니다. 어떤 용도로 사용하면 가장 유용할까요? 행/열/이름을 사용하지 않아도 코드의 속도가 약간 빨라질 수 있지만 대부분의 R 함수는 객체에서 직접 names 속성 (또는 행 이름과 같은 행의 이름)을 사용하므로 플로팅/라벨링에 대한 레이블을 계속 제공 할 필요가 없습니다. 결과 등

+0

+1 좋은 답변입니다. – Aaron

10

xlabnames.arg이어야합니다. 자세한 내용은 ?barplot을 참조하십시오.

+0

+1은'names.arg' 인수를 나타냅니다. –

2

axis()을 사용하는 방법은 중간 점을 캡처하는 것이고, 이것은 바 플롯 함수가 반환하는 것입니다. ?barplot 참조 :

mids <- barplot(x, xlab="") 

axis(1, at=mids, labels=c("AA/AA","AA/CC","AA/AC","AA/NC","CC/AA","CC/CC", 
          "CC/AC","CC/NC","AC/AA","AC/CC","AC/AC","AC/NC"), 
     las=3) 
3

이 시도 :

barplot(x, cex.names=0.7, 
     names.arg=c("AA/AA","AA/CC","AA/AC","AA/NC","CC/AA","CC/CC","CC/AC", 
        "CC/NC","AC/AA","AC/CC","AC/AC","AC/NC")) 
관련 문제