239

一部のデータのプロットを生成していますが、ティック数が少なすぎるため、読み取りの精度を上げる必要があります。

ggplot2の軸ティックの数を増やす方法はありますか?

ベクトルを軸ティックとして使用するようにggplotに指示できることはわかっていますが、必要なのは、すべてのデータのティック数を増やすことです。つまり、データからティック数を計算したいのです。

おそらくggplotはいくつかのアルゴリズムを使用してこれを内部的に実行しますが、私が望むものに応じて変更するために、それがどのように実行されるかを見つけることができませんでした。

4

6 に答える 6

231

scale_x_continuousおよび/またはを変更することにより、ggplotsのデフォルトのスケールをオーバーライドできますscale_y_continuous。例えば:

library(ggplot2)
dat <- data.frame(x = rnorm(100), y = rnorm(100))

ggplot(dat, aes(x,y)) +
  geom_point()

あなたにこれを与えます:

ここに画像の説明を入力してください

そして、スケールをオーバーライドすると、次のようなものが得られます。

ggplot(dat, aes(x,y)) +
  geom_point() +
  scale_x_continuous(breaks = round(seq(min(dat$x), max(dat$x), by = 0.5),1)) +
  scale_y_continuous(breaks = round(seq(min(dat$y), max(dat$y), by = 0.5),1))

ここに画像の説明を入力してください

プロットの特定の部分に単に「ズームイン」したい場合はxlim()ylim()それぞれとを見てください。他の議論も理解するために、ここで良い洞察を見つけることもできます。

于 2012-07-04T22:15:36.613 に答える
212

Daniel Krizianのコメントに基づいて、自動的にインポートされるライブラリのpretty_breaks関数を使用することもできます。scales

ggplot(dat, aes(x,y)) + geom_point() +
scale_x_continuous(breaks = scales::pretty_breaks(n = 10)) +
scale_y_continuous(breaks = scales::pretty_breaks(n = 10))

あなたがしなければならないのは、必要なティック数を挿入することだけですn


少し役に立たない解決策(データ変数を再度指定する必要があるため)、組み込みpretty関数を使用できます。

ggplot(dat, aes(x,y)) + geom_point() +
scale_x_continuous(breaks = pretty(dat$x, n = 10)) +
scale_y_continuous(breaks = pretty(dat$y, n = 10))
于 2015-07-14T13:45:47.200 に答える
68

に関数の引数を指定するscaleと、ggplotはその関数を使用して目盛りの位置を計算します。

library(ggplot2)
dat <- data.frame(x = rnorm(100), y = rnorm(100))
number_ticks <- function(n) {function(limits) pretty(limits, n)}

ggplot(dat, aes(x,y)) +
  geom_point() +
  scale_x_continuous(breaks=number_ticks(10)) +
  scale_y_continuous(breaks=number_ticks(10))
于 2013-06-23T03:16:15.473 に答える
37

v3.3.0以降、およびのブレークを自動的に生成ggplot2するオプションがあります。n.breaksscale_x_continuousscale_y_continuous

    library(ggplot2)

    plt <- ggplot(mtcars, aes(x = mpg, y = disp)) +
      geom_point()

    plt + 
      scale_x_continuous(n.breaks = 5)

ここに画像の説明を入力してください

    plt + 
      scale_x_continuous(n.breaks = 10) +
      scale_y_continuous(n.breaks = 10)

ここに画像の説明を入力してください

于 2020-01-13T22:29:49.827 に答える
6

さらに、

ggplot(dat, aes(x,y)) +
geom_point() +
scale_x_continuous(breaks = seq(min(dat$x), max(dat$x), by = 0.05))

ビニングされた、または離散的にスケーリングされたx軸データに対して機能します(つまり、丸めは必要ありません)。

于 2018-01-29T16:28:24.813 に答える
2

この質問への回答と、R ggplotでX軸とY軸に等間隔でラベルを設定するにはどうすればよいですか?

mtcars %>% 
  ggplot(aes(mpg, disp)) +
  geom_point() +
  geom_smooth() + 
  scale_y_continuous(limits = c(0, 500),
                     breaks = seq(0,500,50))  +
  scale_x_continuous(limits = c(0,40),
                     breaks = seq(0,40,5))
于 2021-10-02T04:47:45.513 に答える