Как сделать R barplot с логарифмической шкалой оси y?
Это должен быть простой вопрос... Я просто пытаюсь сделать barplot из вектора в R,но хочу, чтобы значения отображались в масштабе журнала с отметками и метками оси 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)
кто-нибудь может помочь мне здесь? Кроме того, маркировка тоже была бы отличной. Спасибо!
2 ответов
на log
аргумент хочет одно - или двухсимвольную строку, указывающую что оси должна быть логарифмической. Нет, не имеет никакого смысла, чтобы ось x барплота была логарифмической, но это общий механизм, используемый всеми "базовыми" графиками - см. ?plot.default
для сведения.
так что вы хотите
barplot(samples, log="y")
Я не могу помочь вам с галочками и маркировкой, боюсь, я бросил базовую графику для ggplot
лет назад и не оглядываться.
это должно заставить вас начать возиться с 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)