2017-05-06 16 views
1

私は最初にバープロットをプロットし、その累積を取って同じ図(グラフ)にプロットしようとしています。問題は、プロットコマンドの場合、結果がバープロット値の中央にならないことです。barplotと同じグラフ上のプロット - x軸の移動

vec1 <- 1:10 
vec2 <- vec1 

for (ii in 2:length(vec1)) { 
    vec2[ii] = vec2[ii-1] + vec1[ii] 
} 

p1 <- barplot(vec1) 
par(new=TRUE) 
plot(p1,vec2, axes=FALSE) 
+0

また、 'vec2 < - cumsum(vec1)'を試してください。 – coffeinjunky

+0

ねえ..ありがとう。問題は依然として、プロットまたはラインのx軸が、バープロット(すなわち、バーの中央にない)と整列していないことである。 – Amir

+0

出力がこれに由来するものであることが分かると便利です。 – Graham

答えて

1

問題がbarplotはx軸上の整数値を使用しないことです。それは独自のx値を計算します、私はスケーリングのために推測します。使用している点のベクトルを取得して他のものと整列させるには、barplotの呼び出しで返されたオブジェクトからそれらを引き出す必要があります。ここでは例です:私はポイント(またはライン)の余地があったことを確認するbarplotへの最初の呼び出しでylimを設定する必要がありました

# make some toy data 
set.seed(1) 
df <- data.frame(cat = LETTERS[1:3], 
       val = seq(3), 
       val2 = rpois(3, lambda = 5), 
       stringsAsFactors = FALSE) 

# now try adding val2 as points to a barplot of val1; as you found, the 
# points aren't centered 
# over the bars like we want 
barplot(df$val, ylim = c(0,7)) 
points(x = seq(3), y = df$val2, pch = 20, col = "red") 

enter image description here

# try again, this time capturing the x values from a call to barplot and then 
# using them in the call to points; this works 
p <- barplot(df$val, ylim = c(0,7)) 
points(x = p, y = df$val2, pch = 20, col = "red") 

enter image description here

注意。

+0

同じロジックを使って@ulfelderに感謝して、バーのy軸を変更することなく、別のy軸を左に作成できますか? – Amir

+0

申し訳ありませんが、私はあなたが何をしたいのか分かりません。 2番目のy軸を追加しますか?元のものを修正しますか?前者の場合は、 'barplot'の呼び出しで' axes = FALSE'を設定し、 'axis'を使って必要なものを描きます。後者の場合は、 'axis'を使って右側に別のものを描きます。 (私はあなたが誰からも地獄を混乱させずに同じ側に2つを描く方法を知らない。) – ulfelder

関連する問題