回答:
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()
それぞれ見てください。他の議論を理解するための良い洞察もここにあります。
max-min/30
、かなり一般的な「バケット」のようなものサイズ...しかし、それはあなたにとって良い出発点かもしれないし、そうでないかもしれません。
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))
scales
していますが、名前空間に関数を追加していません。したがって、インポートなしでそれらをとして呼び出すことができますscales::pretty_breaks(n = 10)
。
関数の引数を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))
number_ticks
。これはすでにで実装されていますpretty_breaks {scales}
。したがって: ggplot(dat, aes(x,y)) + geom_point() + scale_x_continuous(breaks=pretty_breaks(n=10)) + scale_y_continuous(breaks=pretty_breaks(n=10))
require(scales)
2)これにより、科学的表記法での改行が表示されないように見えるため、1e6は1000000に変更されますか?
pretty
なしでベースRを使用できscales
、値を引数として提供します。例:(breaks=pretty(dat$x, n=10))
の次期バージョンv3.3.0にggplot2
はn.breaks
、scale_x_continuous
およびのブレークを自動的に生成するオプションがあります。scale_y_continuous
devtools::install_github("tidyverse/ggplot2")
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)
by
引数を「一般化」することです。つまり、0.5は、範囲がc(-3,3)のこのデータには適していますが、範囲のデータには適していません。 c(0,5000)です。それを計算する関数はありますか?