web-dev-qa-db-ja.com

ggplot2プロットで垂直グリッド線を抑制するにはどうすればよいですか?

横(x)配置の指標として棒で十分な棒グラフを作成しているので、余分な垂直グリッド線を描画しないようにしたいと思います。

Opts()でマイナーグリッド線とメジャーグリッド線のスタイルを設定する方法は理解していますが、私の人生では、垂直グリッド線だけを抑制する方法を理解することはできません。

library(ggplot2)

data <- data.frame(x = 1:10, y = c(3,5,2,5,6,2,7,6,5,4))

ggplot(data, aes(x, y)) +
  geom_bar(stat = 'identity') +
  opts(
    panel.grid.major = theme_line(size = 0.5, colour = '#1391FF'),
    panel.grid.minor = theme_line(colour = NA),
    panel.background = theme_rect(colour = NA),
    axis.ticks = theme_segment(colour = NA)
  )

この時点で、すべてのグリッド線を非表示にしてからgeom_hline()でそれらを描画し直さなければならないように見えますが、これは一種の苦痛のように見えます(また、どのようにダニを見つけることができるか完全には明らかではありません) geom_hline()に供給する/ majorグリッド線の位置。

ご意見をいただければ幸いです!

64
Tarek

使用してみてください

scale_x_continuous(breaks = NULL)

これにより、すべての垂直グリッド線とx軸の目盛りラベルが削除されます。

14
learnr

Ggplot2 0.9.2の時点で、これはmuchになっており、「テーマ」を使用した方が簡単です。以下に示すように、テーマをpanel.grid.major.xおよびpanel.grid.major.yに個別に割り当てることができます。

#   simulate data for the bar graph
data <- data.frame( X = c("A","B","C"), Y = c(1:3) )    

#   make the bar graph
ggplot( data  ) +
    geom_bar( aes( X, Y ) ) +
    theme( # remove the vertical grid lines
           panel.grid.major.x = element_blank() ,
           # explicitly set the horizontal lines (or they will disappear too)
           panel.grid.major.y = element_line( size=.1, color="black" ) 
    )

この例の結果は非常に見苦しいですが、水平線とx軸の目盛りを維持しながら垂直線を削除する方法を示しています。

136
dave.ponet

別のオプションについては、グリッドレベルの編集をご覧ください。

https://github.com/hadley/ggplot2/wiki/Editing-raw-grid-objects-from-a-ggplot

5
James Howison

これにより、データポイントのみが残ります。

ggplot(out, aes(X1, X2)) + 
    geom_point() + 
    scale_x_continuous(breaks = NULL) + 
    scale_y_continuous(breaks = NULL) + 
    opts(panel.background = theme_blank()) + 
    opts(axis.title.x = theme_blank(), axis.title.y = theme_blank())
4
M0M