Расстояние по оси X с пользовательскими делениями на логарифмической шкале

Я нанес свои данные на обычную диаграмму рассеяния, используя plot(). Я определил диапазон оси x от 0 до 1000 по логарифмической шкале. Все идет нормально. Но у меня есть 3 разных набора данных, и для одного из них интервал равен 0, 1, 10, 100, 1000, а для двух других отсутствует «1». Я хочу, чтобы все 3 графика включали "1".

Я пробовал с xaxt="n", а затем с axis(1, at=c(0, 1, 10, 100, 1000)).

Затем 1 отображается близко к 0, поэтому логарифмическое масштабирование между 0 и 1 отсутствует. Надеюсь, это не слишком запутывает. Как мне удается отобразить 0,1,10,100,1000 ВСЕХ в логарифмическом масштабе, т.е. с одинаковым интервалом между всеми этими значениями?

Я надеюсь, что кто-то может помочь!


person user3045021    schedule 28.11.2013    source источник
comment
Вы пытались установить xlim в plot?   -  person fotNelton    schedule 28.11.2013
comment
Надеюсь, этот пост даст вам подсказку   -  person TWL    schedule 28.11.2013
comment
@fotNelton: Да, я использую xlim для определения диапазона, но R, похоже, выполняет установку тиков по умолчанию.   -  person user3045021    schedule 28.11.2013
comment
TWL: Это намек на то, что мой пост содержит слишком мало информации? Извините, я действительно новичок. Но я выложу весь сценарий, если хотите   -  person user3045021    schedule 28.11.2013


Ответы (1)


Вам нужно сделать что-то вроде этого:

#plot 1
# i don't know what your ylim should be but you want them to be 
# minimum across y1, y2, y3 and maximum across y1, y2, y3
plot(x1,y1,axes=F,xlim=c(0,1000),ylim=c(?,?),xlog=TRUE, col="red")
par(new=T)

#plot 2
plot(x2,y2,axes=F,xlim=c(0,1000),ylim=c(?,?),xlog=TRUE, col="blue")
par(new=T)

#plot 3
plot(x3,y3,axes=F,xlim=c(0,1000),ylim=c(?,?),xlog=TRUE, col="yellow")

#now put back in the axes
#y axis first
axis(2)
#x axis
axis(1,at=c(0, 1, 10, 100, 1000),label=c(0, 1, 10, 100, 1000))
box(bty="l")

Это делает три графика с одинаковыми диапазонами x и y; в частности, диапазоны x для всех графиков будут одинаковыми, от 0 до 1000. Обе оси должны охватывать ваши данные. Если это не так, вам просто нужно расширить x или y. Замените вопросительные знаки в ylim=c(?,?) некоторыми числовыми значениями, которые будут охватывать диапазон ваших значений y.

После того, как данные нанесены на график, вы добавляете операторы axis для размещения галочек и меток.

person David    schedule 11.12.2015