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


81

水平(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()にフィードする主要なグリッド線の位置。)

どんな考えでもいただければ幸いです!

回答:


24

使ってみてください

scale_x_continuous(breaks = NULL)

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


9
それはそれでしたが、あなたが指摘したように、私は必要なx軸ラベルを持っていません-それらを書き戻す方法について何か考えはありますか?
タレク2010

18
新しいバージョンによると、Please use breaks = NULL to remove breaks in the scale. (Deprecated; last used in version 0.8.9)
Stat-R

scale_x_discrete(breaks = NULL)x変数が離散的である場合に使用するものです。
luchonacho 2018

4
ラベルを付けたいが休憩がない場合、これは機能しません。
groceryheist

@groceryheistはまだ解決策を探しているかどうかわかりませんが、ここでggExtraライブラリからremoveGridに出くわしました:rdrr.io removeGridは、軸ラベルを保持しながらグリッド線を削除します。
SHKT

176

ggplot2 0.9.2以降、これは「テーマ」を使用して行うのがはるかに簡単になりました。以下に示すように、テーマを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軸の目盛りを保持しながら垂直線を削除する方法を示しています。


2
おそらくこれは、更新を必要とします:それは私を与えるError: stat_count() must not be used with a y aesthetic.
ガスパル

1
2020年6月19日現在もエラーが発生しています。このソリューションは現在機能しません。
メグ

1
@Megはまだ解決策を探しているかどうかわかりませんが、ここでggExtraライブラリからremoveGridに出くわしました:rdrr.io removeGridは、軸ラベルを保持しながらグリッド線を削除します。
SHKT

4

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

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())

おそらくこれを更新する必要があります。実行すると、次のエラーが発生します。opts(panel.background = theme_blank())のエラー:関数「opts」が見つかりませんでしたこの回答は、「データ」を使用するOPの再現可能な回答にも従わないことに注意してください( 「out」)、および「X1」と「X2」ではなく「x」と「y」。
メグ

1

関連するスレッドから私の答えをコピーして、

2020年にこれを調べている人のために、ggExtraライブラリからremoveGrid関数の形式で解決策を見つけました。rdrr.io> removeGrid

ggplot2バージョン3.3.0およびggExtraバージョン0.9で動作することをテストし、グリッド線のない軸ティックを取得しました。


1

オプション1:

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

ggplot(data_df, aes(x, y)) +
  geom_bar(stat = 'identity') +
  theme(panel.background = element_rect(fill = "white"))

オプション2:

data_df <- data.frame(x = 1:10, y = c(3,5,2,5,6,2,7,6,5,4))
    
ggplot(data_df, aes(x, y)) +
      geom_bar(stat = 'identity') +
      theme(
        panel.grid.major.x = element_blank(),
        panel.grid.minor.x = element_blank(),
        panel.grid.major.y = element_blank(),
        panel.grid.minor.y = element_blank()
      )
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.