2013-12-19 1 views
7

이것은 간단한 질문이어야합니다 ... 저는 R의 벡터로부터 막대 그래프를 만들려고하지만 y 축 눈금과 레이블이있는 로그 눈금에 값을 표시하려고합니다. 나는 정상적인 barplot을 잘 만들 수 있지만, 로그 나 라벨링을 사용하려고 할 때, 물건이 남쪽으로 향하게됩니다.로그 y 축 스케일로 R 막대 그래프를 만드는 방법은 무엇입니까?

samples <- c(10,2,5,1,2,2,10,20,150,23,250,2,1,500) 
barplot(samples) 

확인,이 작품 :

여기에 내 현재 코드입니다. 그런 다음 barplot 설명서에 정의 된 log="" 함수를 사용하려고 시도하지만 작동하지 않습니다. 여기 내가 시도한 바보 같은 시도가있다 :

barplot(samples, log="yes") 
barplot(samples, log="TRUE") 
barplot(log=samples) 

누군가 나를 도와 줄 수 있니? 또한 라벨링도 훌륭합니다. 감사!

+0

위해 나는' – Jota

+0

들 덕분에, 이것은 당신의 도움과 설명을위한 좋은 – jake9115

답변

10

log 인수는이 로그이어야하는 을 지정하는 1 자 또는 2 자 문자열을 원합니다. 아니요, 막대 그래프의 x 축이 대수 (logarithmic)가되는 것은 의미가 없지만 모든 기본 그래픽에서 사용되는 일반적인 메커니즘입니다. 자세한 내용은 ?plot.default을 참조하십시오.

그래서 당신이 원하는 것을 내가 눈금 ​​표시 및 라벨링과 함께 당신을 도울 수

barplot(samples, log="y") 

, 난, 난 두려워 ggplot년 전에 대한 기본 그래픽을 통해 던져 버리고 뒤돌아 보지도 않을거야.

+0

감사하다 (= "Y"로그 샘플)는 barplot'을 찾고 생각합니다. 이것이 효과가 있었고 ggplot도 살펴볼 것입니다. – jake9115

2

이렇게 시작하면 ggplot2으로 시작해야합니다. scale_y_log10() 함수 내에서

d<-data.frame(samples) 
ggplot(data=d, aes(x=factor(1:length(samples)),y=samples)) + 
    geom_bar(stat="identity") + 
    scale_y_log10() 

당신은 휴식, 라벨 등을 정의 할 수 있습니다. 마찬가지로 x 축에 레이블을 지정할 수 있습니다. 예를

ggplot(data=d, aes(x=factor(1:length(samples)),y=samples)) + 
    geom_bar(stat="identity") + 
    scale_y_log10(breaks=c(1,5,10,50,100,500,1000), 
        labels=c(rep("label",7))) + 
    scale_x_discrete(labels=samples)