Увеличить количество тиков оси
Я генерирую графики для некоторых данных, но количество тиков слишком мало, мне нужно больше точности при чтении.
Есть ли способ увеличить количество тиков оси в ggplot2?
Я знаю, что могу сказать ggplot использовать вектор в качестве тиков оси, но я хочу увеличить количество тиков для всех данных. Другими словами, я хочу, чтобы количество тиков было рассчитано по данным.
Возможно, ggplot делает это внутри с некоторым алгоритмом, но я не мог найти, как он это делает, чтобы изменить в соответствии с тем, что я хочу.
Ответы
Ответ 1
Вы можете переопределить масштаб по умолчанию ggplots, изменив scale_x_continuous
и/или scale_y_continuous
. Например:
library(ggplot2)
dat <- data.frame(x = rnorm(100), y = rnorm(100))
ggplot(dat, aes(x,y)) +
geom_point()
Дает вам следующее:
![enter image description here]()
И переопределение шкал может дать вам что-то вроде этого:
ggplot(dat, aes(x,y)) +
geom_point() +
scale_x_continuous(breaks = round(seq(min(dat$x), max(dat$x), by = 0.5),1)) +
scale_y_continuous(breaks = round(seq(min(dat$y), max(dat$y), by = 0.5),1))
![enter image description here]()
Если вы хотите просто "увеличить" на определенной части графика, посмотрите на xlim()
и ylim()
соответственно. Хорошее понимание также можно найти здесь, чтобы понять и другие аргументы.
Ответ 2
Основываясь на комментарии Дэниела Кризиана, вы также можете использовать функцию pretty_breaks
из библиотеки scales
, которая импортируется автоматически:
ggplot(dat, aes(x,y)) + geom_point() +
scale_x_continuous(breaks = scales::pretty_breaks(n = 10)) +
scale_y_continuous(breaks = scales::pretty_breaks(n = 10))
Все, что вам нужно сделать, это вставить желаемое количество тиков для n
.
Чуть менее полезное решение (поскольку вам снова нужно указать переменную данных), вы можете использовать встроенную pretty
функцию:
ggplot(dat, aes(x,y)) + geom_point() +
scale_x_continuous(breaks = pretty(dat$x, n = 10)) +
scale_y_continuous(breaks = pretty(dat$y, n = 10))
Ответ 3
Вы можете предоставить аргумент функции scale
, и ggplot будет использовать
эту функцию для расчета местоположений тика.
library(ggplot2)
dat <- data.frame(x = rnorm(100), y = rnorm(100))
number_ticks <- function(n) {function(limits) pretty(limits, n)}
ggplot(dat, aes(x,y)) +
geom_point() +
scale_x_continuous(breaks=number_ticks(10)) +
scale_y_continuous(breaks=number_ticks(10))
Ответ 4
Дополнительно,
ggplot(dat, aes(x,y)) +
geom_point() +
scale_x_continuous(breaks = seq(min(dat$x), max(dat$x), by = 0.05))
Работает для биндовых или дискретных масштабированных данных по оси x (т.е. округление не обязательно).