ループを使用してggplot2
に一連のボックスを描画しようとしています。以下、私はおもちゃの例を含んでいます。ggplot2:ループを使用して複数のボックスをプロットする
# Load necessary library
library(ggplot2)
# Height of rectangle
box.size <- 0.5
# Colours for rectangles
my.cols <- c("red", "blue", "purple", "yellow", "green")
# Initialise plot & set limits
p <- ggplot() + xlim(0, 1) + ylim(0, 2.5)
# Loop through and draw boxes
for(i in 1:5){
# Draw boxes
p <- p + geom_rect(aes(xmin = 0, xmax = 1, ymin = (i - 1) * box.size, ymax = i * box.size),
fill = my.cols[i])
# Check that the loop is working
print(i)
}
# Plot graph
print(p)
このコードは、最終的な四角形をプロットし、私は私が間違っているのかを把握することはできません。確認するprintステートメントが含まれているので、ループが正しく実行されています。誰かが私のエラーを指摘して解決策を提示できますか?
'ggplot'は* data *をプロットするために設計されています。あなたが望むならば、同様のループでデータフレームを構築し、それをプロットすることをお勧めします。つまり、ドライバーをハンマーとして使用しようとしています。 – Gregor
さて、分かりました。役に立った返信ありがとう。しかし、好奇心から:コードはなぜ失敗するのですか? – Lyngbakr
私は正確にはわかりません。私の 'ggplot'はデータフレームの周りに強く設計されています。ほとんどの場合、データフレームなしで 'aes()'を使うべきではありませんが、それがなくてもコードは機能しません。 'for'ループはそれとは何の関係もありません。最初の2つの繰り返しを手作業で書くと、最初のレイヤーは期待通りに動作し、2番目のレイヤーは動作しません。 – Gregor