2016-04-28 11 views
0

私は既にthis questionを見ましたが、与えられた解決策は私の使用例では不十分です。プロットが描画される前に軸の制限を照会することは可能ですか?

元の(自動的に生成された)上位ylimを保存したままグラフをゼロベースにし、グラフを再描画せずに再描画したい。

parはプロットがすでに描画された後にプロットの上界のみを提供するように見えるので、これは私が試したものです

#!/usr/bin/Rscript 


args <- commandArgs(trailingOnly = TRUE) 
data <- read.csv(args[1],head=F) 
pdf(paste(args[1], ".pdf", sep='')) 
plot(seq(1,dim(data)[1]), data$V1, ylim=c(0,par('usr')[4])) 
dev.off() 

これを実行するサンプルデータがあります。

117 
190 
189 
189 
189 
191 
192 
193 
194 
197 

元の上部のyの限界を維持しながら、どのように私は、ゼロベースの私のグラフのでしょうか?あなたがyaxs = "r"デフォルト設定を使用している場合

+2

目盛りの配置先を知ることは、データだけでなく、plot()の他のパラメータがどこに行くかを決定できるという事実によって複雑になります。妥当な一番上の目盛りを得るには、おそらく 'ylim = c(0、max(pretty(data $ V1)))'のようなものを使うのが最善でしょう。 – MrFlick

答えて

3

、あなたがy-制限がpar助けにxaxsセクション(yaxsxaxsセクションにあなたを参照)から計算されているかについての情報を使用して上限を計算することができますページ:x軸に使用する軸間隔計算の

xaxs
スタイル。 可能な値は、 "r"、 "i"、 "e"、 "s"、 "d"です。スタイルは、通常、データの範囲または与えられた場合はxlimによって制御される です。
スタイル "r"(通常) は、各端でデータ範囲を4%延長してから、拡張範囲内に収まるきれいなラベルの軸を 見つけます。

upper_lim <- diff(range(x)) * 0.04 + max(x) 
upper_lim 
#[1] 200.2 

我々はプロットし、それについて尋ねることで、これは(デフォルト設定下)の上限の値であることがわかります。

plot(seq_along(x$V1), x$V1) 
par("usr", no.readonly = TRUE)[4] 
# [1] 200.2 


plot(seq_along(x$V1), x$V1, ylim = c(0, upper_lim)) 

データを

x <- read.table(text = "117 
190 
189 
189 
189 
191 
192 
193 
194 
197") 
0

はい。可能。 plotはすべての設定を行いますが、プロットは抑制します。私はそれがplot="n"だと思う。 par( "usr")ですべての座標を取得できます。 (SFBayのBART列車から送信されたため、その時点でRコンソールにアクセスできませんでした)

?plotに記載されています。

Y <- scan(text="117 
190 
189 
189 
189 
191 
192 
193 
194 
197");plot(seq(1,length(Y)), Y, type="n") # plots to the interactive device 
opar=par() 

pdf("Y.pdf"); # needed to get the 'usr' value before resetting `par` with new device 
    plot(seq(1,10),Y, ylim=c(0,opar$usr[4])) 
dev.off() 
+0

私は周りを見回し、そのようなパラメータはどこにでも見つけられませんでした。覚えている場合は、この回答を更新してください。 – merlin2011

関連する問題