Вопрос по r, ggplot2 – Оси в стиле R с ggplot

11

Используя ggplot, возможно ли получить «R-стиль»? Оси x / y, которые не встречаются в начале координат и вместо этого состоят из двух отключенных диапазонов, как в следующем примере?

enter image description here

Причина здесь в основном в том, чтобы графики ggplot выглядели согласованно рядом с диаграммами pure-R.

напрашивается вопрос, почему бы не сделать базовые участкиlook like ggplot2? ;) baptiste
Если вы хотите оцифровать базовые графики, вы можете попробовать пакетdigitize. mnel
Потому что я не могу ни обновить, ни переделать базовые графики. Я действительно рассматривал редактирование SVG, сгенерированного ggplot, но это такой взлом. Christian

Ваш Ответ

1   ответ
13

library(ggplot2)

d <- data.frame(x=1:10, y=rnorm(10))

base_breaks_x <- function(x){
  b <- pretty(x)
  d <- data.frame(y=-Inf, yend=-Inf, x=min(b), xend=max(b))
  list(geom_segment(data=d, aes(x=x, y=y, xend=xend, yend=yend), inherit.aes=FALSE),
       scale_x_continuous(breaks=b))
}
base_breaks_y <- function(x){
  b <- pretty(x)
  d <- data.frame(x=-Inf, xend=-Inf, y=min(b), yend=max(b))
  list(geom_segment(data=d, aes(x=x, y=y, xend=xend, yend=yend), inherit.aes=FALSE),
       scale_y_continuous(breaks=b))
}

ggplot(d, aes(x,y)) +
  geom_point() +
  theme_bw() +
  theme(panel.border = element_blank(),
       panel.grid.major = element_blank(),
       panel.grid.minor = element_blank()) +
  base_breaks_x(d$x) +
  base_breaks_y(d$y)

screenshot

Изменить:связанный с этим вопрос с тех пор обсуждался в пакете ggtheme и потенциально обеспечивает более чистое решение (нет необходимости явно предоставлять данные для функции breaks).

Очень хорошо! Я думал об использовании opts (axis.line = theme_line ()), но там я получаю очень странные ошибки ...
Да, хорошо сделано - спасибо! Christian

Похожие вопросы