2012-05-30 12 views
11

ggplotを使用すると、次の例のように、2つの切断された範囲で構成されている「R形式」のx軸とy軸を原点では使用できませんか?g形式のRスタイル軸

enter image description here

ここに理由がggplotプロットは次の純粋な-Rのものに一貫見てもらうために主にあります。

+3

これは基本的なプロットを作成しないでください[ggplot2のように見えますか?](http://rwiki.sciviews.org/doku.php?id=tips:graphics-misc:ggplot2theme_inbase);) – baptiste

+0

ベースプロットを更新も再実行もしません。私は実際にggplotで生成されたもののSVGを編集することを検討しましたが、それはそのようなハックです。 – Christian

+0

ベースプロットをデジタル化するには、 'digitize'パッケージを試してみてください。 – mnel

答えて

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パッケージのrelated issue has since been discussed、および潜在的にクリーナー液(休憩関数に明示的にデータを提供する必要はありません)を提供します。

+0

非常に良い!私はopts(axis.line = theme_line())を使用することを考えましたが、私はそこに非常に奇妙なエラーが発生します... –

+0

うん、うまくやった - ありがとう! – Christian

関連する問題