省略された軸ラベルのプロットを停止するようにRに強制します-たとえば、ggplot2の1e + 00


111

ggplot2で、軸ラベルが省略されるのをどのように停止できますか-たとえば1e+00, 1e+01、一度プロットされたx軸に沿って?理想的には、Rにこの場合はとなる実際の値を表示させます1,10

どんな助けも大歓迎です。

回答:


134

私はあなたがこれを探していると思います:

require(ggplot2)
df <- data.frame(x=seq(1, 1e9, length.out=100), y=sample(100))
# displays x-axis in scientific notation
p  <- ggplot(data = df, aes(x=x, y=y)) + geom_line() + geom_point()
p

# displays as you require
require(scales)
p + scale_x_continuous(labels = comma)

2
これはうまくいきました。ありがとうございました。興味深いことに、scalesパッケージを使用するggplot2の軸には、他にどのような「ラベル」オプションがありますか?
JPD 2013年

3
このggplot2.orgページもご覧ください。同様の問題で私にとって非常に役に立ちました。
Marta Karas 2014

64

あなたは次のようなことを試しましたか?

options(scipen=10000)

プロットする前に?


3
これは、科学表記法を使用することを決定するためのペナルティを高く設定することで機能します。この回答の詳細説明:stackoverflow.com/a/18600721/1080804
ecoe

35

@Arunの更新内容です。今日試してみましたが、実際に実行されたため機能しませんでした。

+ scale_x_continuous(labels = scales::comma)

2
@Arunの答えはそのままで問題なく機能するはずです。おそらく、require(scales)?これにより、commaスケールを含むパッケージがインポートされます。ご存知のように、事前にパッケージを要求する代わりに、参照するときにパッケージを指定することもできます。
cincodenada

17

より一般的な解決策としてscales::format_format、科学表記法を削除するために使用できます。また、これscales::commaにより、桁数をコンマで区切るだけでなく、ラベルを正確に表示する方法について多くの制御が可能になります。

例えば:

require(ggplot2)
require(scales)
df <- data.frame(x=seq(1, 1e9, length.out=100), y=sample(100))

# Here we define spaces as the big separator
point <- format_format(big.mark = " ", decimal.mark = ",", scientific = FALSE)

# Plot it
p  <- ggplot(data = df, aes(x=x, y=y)) + geom_line() + geom_point()
p + scale_x_continuous(labels = point)

8

スケールライブラリを必要としないソリューションがあります。

あなたが試すことができます:

# To deactivate scientific notation on y-axis:

    p + scale_y_continuous(labels = function(x) format(x, scientific = FALSE))

# To activate scientific notation on y-axis:

    p + scale_y_continuous(labels = function(x) format(x, scientific = TRUE))

# To deactivate scientific notation on x-axis:

    p + scale_x_continuous(labels = function(x) format(x, scientific = FALSE))

# To activate scientific notation on x-axis:

    p + scale_x_continuous(labels = function(x) format(x, scientific = TRUE))

2

Rが科学表記法に使用するペナルティを高く設定する最も簡単な一般的な解決策ではありませんか?

つまりscipen()、使いやすい番号に設定します。

たとえば、グラフの軸の最大値が100 000である可能性が高い場合、設定scipen(200000)により、R(およびggplot)が200000未満のすべての数値に標準表記を使用し、ggplot関数に線を追加する必要がなくなります。


0

元の質問を拡張して、1、0.1、0.01、0.001などの分数も含め、末尾のゼロを回避する

p + scale_x_continuous(labels = function(x) sprintf("%g", x))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.