12

ggplot を使用して、次の例のように、原点で交わらず、代わりに 2 つの切断された範囲で構成される「R スタイル」の x/y 軸を取得することは可能ですか?

ここに画像の説明を入力

ここでの主な理由は、ggplot プロットが純粋な R のものと同じように見えるようにするためです。

4

1 に答える 1

15

これを試して、

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)

スクリーンショット

編集:関連する問題がggtheme パッケージで議論されており、よりクリーンなソリューションを提供する可能性があります (ブレーク関数に明示的にデータを提供する必要はありません)。

于 2012-05-30T09:32:43.177 に答える