Для точного управления осями, расположите их отдельно, поэтому сначала подавьте оси, используя аргумент axes = FALSE
в вызове plot()
:
plot(x, y, type="h", log="xy", axes = FALSE)
Затем добавьте оси так, как вы хотите
axis(side = 1, at = (locs <- 1/c(1,10,100,1000)), labels = locs)
axis(side = 2)
box()
На вопрос 2 можно ответить таким же образом, вам просто нужно указать места для отметок, возможно установив аргумент аргумента tcl
в вызове axis()
, чтобы он был немного меньше значения по умолчанию(что является -0.5
).Сложность в том, чтобы генерировать мелкие тики, которые вы хотите.Я мог бы только придумать это:
foo <- function(i, x, by) seq(x[i,1], x[i, 2], by = by[i])
locs2 <- unlist(lapply(seq_along(locs[-1]), FUN = foo,
x= embed(locs, 2), by = abs(diff(locs)) / 9))
или
locs2 <- c(outer(1:10, c(10, 100, 1000), "/"))
, которые оба дают:
R> locs2
[1] 0.100 0.200 0.300 0.400 0.500 0.600 0.700 0.800 0.900 1.000 0.010 0.020
[13] 0.030 0.040 0.050 0.060 0.070 0.080 0.090 0.100 0.001 0.002 0.003 0.004
[25] 0.005 0.006 0.007 0.008 0.009 0.010
Мы используем их через другой вызов axis()
:
axis(side = 1, at = locs2, labels = NA, tcl = -0.2)
Мы подавляем метки здесь, используя labels = NA
.Вам просто нужно разобраться, как сделать векторы для at
...
Соединяя два шага вместе, мы получим:
plot(x, y, type="h", log="xy", axes = FALSE)
axis(side = 1, at = (locs <- 1/c(1,10,100,1000)), labels = locs)
axis(side = 1, at = locs2, labels = NA, tcl = -0.3)
axis(side = 2)
box()
, который производит:
![plot produced by axis calls](https://i.stack.imgur.com/BZh3q.png)
Что касается вопроса 3, что вы подразумеваете под максимальным диапазоном?Вы можете установить пределы для оси Y, используя аргумент ylim
, равный plot()
.Вы предоставляете пределы (минимальные и максимальные) следующим образом:
plot(x, y, type="h", log="xy", axes = FALSE, ylim = c(0.2, 1))
axis(side = 1, at = (locs <- 1/c(1,10,100,1000)), labels = locs)
axis(side = 2)
box()
Но одного диапазона недостаточно для определения пределов, вам нужно указать нам одно из минимальных или максимальных значений, чтобы отобразитьна графике или фактическом диапазоне значений, которые вы хотите.