2013-12-19 7 views
7

Это должен быть простой вопрос ... Я просто пытаюсь сделать штрих-код из вектора в R, но хочу, чтобы значения отображались в логарифмической шкале с отметками и метками оси y. Я могу сделать нормальный штрих-код просто прекрасным, но когда я пытаюсь использовать журнал или маркировку, все идет на юг.Как сделать R barplot с шкалой оси y?

Вот мой текущий код:

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

Хорошо, это работает. Затем я пытаюсь использовать функцию log="", определенную в руководстве по barplot, и она никогда не работает. Вот несколько глупых попыток, которые я пробовал:

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

Может кто-нибудь, пожалуйста, помогите мне здесь? Кроме того, маркировка будет отличной. Благодаря!

+0

Я думаю, что вы ищете 'barplot (образцы, бревенчатый =«у»)' – Jota

+0

спасибо, ребята, это хорошо – jake9115

ответ

10

Аргумент log требует одно- или двухсимвольной строки с указанием , оси должны быть логарифмическими. Нет, для оси x штрихового рисунка нет смысла логарифмически, но это общий механизм, используемый всеми «базовыми» графиками - см. ?plot.default.

Так что вы хотите

barplot(samples, log="y") 

Я не могу помочь вам с отметками и маркировками, я боюсь, я накинул базовую графику для ggplot лет назад и никогда не оглядывался назад.

+0

Спасибо за вашу помощь и объяснения. Это сработало, и я также посмотрю на ggplot. – jake9115

2

Это должно начаться с ggplot2.

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

В функции 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) 
Смежные вопросы