原点を強制的に0から開始する


139

ggplot2でy軸とx軸の原点/遮断を設定するにはどうすればよいですか?

x軸の線は正確ににあるはずy=Zです。

Z=0または別の指定された値。

回答:


199

xlimそしてylimここでそれをカットしないでください。あなたは使用する必要があるexpand_limitsscale_x_continuousscale_y_continuous。試してください:

df <- data.frame(x = 1:5, y = 1:5)
p <- ggplot(df, aes(x, y)) + geom_point()
p <- p + expand_limits(x = 0, y = 0)
p # not what you are looking for

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

p + scale_x_continuous(expand = c(0, 0)) + scale_y_continuous(expand = c(0, 0))

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

あなたはで、例えば、ポイントを(必ずポイントが切断取得されていません作るために、物事を少し調整を参照する必要があるかもしれませんx = 5y = 5


29
:私はまた、制限を指定するために必要なscale_x_continuous(expand = c(0, 0), limits = c(0,5))、何とかそれなしで、それは動作しませんでした
JelenaČuklina

3
私はもう1つのピースが役立つと思います。それは次のようなものを使用しているexpand=expand_scale(mult=c(0,0.1))ので、上端にパディングがまだあります:stackoverflow.com/a/59056123/8400969
Michael

4

これらをggplotに追加するだけです:

+ scale_x_continuous(expand = c(0, 0), limits = c(0, NA)) + 
  scale_y_continuous(expand = c(0, 0), limits = c(0, NA))

df <- data.frame(x = 1:5, y = 1:5)
p <- ggplot(df, aes(x, y)) + geom_point()
p <- p + expand_limits(x = 0, y = 0)
p # not what you are looking for


p + scale_x_continuous(expand = c(0, 0), limits = c(0,NA)) + 
  scale_y_continuous(expand = c(0, 0), limits = c(0, NA))

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

最後に、取る素晴らしい偶然あなたのチャートからデータを除外しないように注意して。たとえば、position = 'dodge'棒/ヒストグラムは、その値がゼロで、軸をゼロから開始する場合、完全にチャートから外れる可能性があります。そのため、棒を表示せず、そこにあることがわかります。最初にデータを完全にプロットし、検査してから、上記のヒントを使用してプロットの美観を改善することをお勧めします。


これを新しいggplotテーマに組み込むこともできますか?
ボレ

@Bolleわかりませんが、同様に知りたい場合は、別の質問として質問し、ここにリンクすることもできます
stevec

今後の参考のためにここにリンク
stevec
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.