2016-04-13 27 views
3

同じ2つの変数の複数のプロットをプロットする必要がありますが、y値の範囲はプロットによって異なります。 y軸を簡略化するために、各プロットにはy軸の最小値と最大値の範囲(データではなく、プロットの最小値/最大値)にのみ目盛りとラベルを表示してください。R最大と最小でy軸のティックバーをプロット

私はusrとyaxpパラメータを使って遊んだことがありますが、運はありません。ここでおもちゃの例です:

x<-1:10 
y<-3:12 
plot(x,y,yaxp=c(par("usr")[3],par("usr")[4],1)) 

私は(中-間なしで)y軸に沿ってプロットの上部と下部に対応する目盛り/ラベルを期待していますが、これは任意の目盛りを置くまで終わりませんまたはy軸上のラベル。誰もがなぜ、どのようにして目的の結果を返すのか説明できますか?

ありがとうございます!

答えて

5

実際にプロットが行われる前に、usrの値がデータに正しく反映されません。正しい値を取得するための一つの方法は、最初のプロット値を取得して、目盛りを配置するためにこれらの値を使用して再度プロットすることである。

plot(x, y) 

min_tick <- par("usr")[3] 
max_tick <- par("usr")[4] 

plot(x, y, yaxt = "n") 
axis(side = 2, at = c(min_tick, max_tick)) 

enter image description here

私はデフォルトの標識が発生させることです。これは、必要に応じてカスタマイズできるものです。

@ 42で指摘したように、軸のデフォルトのプロット動作は、データ範囲を4%延長することです。だから、minとmaxは、同様に、その情報を用いて計算することができます。

min_tick <- min(y) - (max(y) - min(y)) * 0.04 
max_tick <- max(y) + (max(y) - min(y)) * 0.04 
+0

Rプロットでは通常、プロット領域を少し広げています(私は1.04の倍率だと思っていましたが、実際の例では1.03だったと思います)。あなたは実際にOPの要求を満たすわけではありませんが、ティックは値の最小値と最大値になりますが、プロット領域の最小値と最大値になります。 –

+0

@ 42 OPによれば、「各プロットには、y軸上の最小値と最大値の範囲で目盛りとラベルを表示するだけです(データではなく、プロットの最小値/最大値)。あなたのコメントを誤解していますか? – Jota

+0

いいえ、しかし、私たちは何が要求されたのかを理解していないようです。私は、営業担当者がプロット範囲がデータ範囲よりも大きいことを理解していたとは思わなかった。 –

1

それはここにあるだけので、ggplot2相当scale_y_continuousbreaksを設定することです:

library(ggplot2) 

ggplot(data.frame(x, y), aes(x, y)) + 
    geom_point() + 
    scale_y_continuous(breaks = c(min(y), max(y))) 

plot with y breaks at min and max

関連する問題