何時間も探しましたが、これを行う機能が見つかりません。
次のようなプロットを生成するにはどうすればよいですか
配列x1 = c(2,13,4)
とがあるとしましょうy2=c(5,23,43)
。高さが 2-5,13-23 の 3 つのブロックを作成したい...
この問題にどのようにアプローチしますか?どの組み込み関数を見るべきかについて、正しい方向に向けられることを願っていますか?
あなたは配列を扱っていると言っているので、私はあなたのデータを使用していませんが、2 つのベクトルを提供してくれました。しかも、見せていただいたデータは重複しています。これは、3 本のバーをグラフ化すると、2 本しか表示されないことを意味します。
提供した小さな画像に基づいて、個人または日付ごとにプロットする 3 つの範囲があります。時系列を使用すると、通常、最小/最大、標準偏差、および現在のデータをプロットするためにこれが表示されます。
秘訣は、シリーズをレイヤーとしてチャート化することです。最初のシリーズは、範囲が最も広いシリーズです (この例ではベージュのバンド)。次の例では、最初に空のプロットをグラフ化し、ベージュ、グレー、赤の 3 つの四角形のレイヤーを追加します。
#Create data.frame
n=100
df <-data.frame(1:n,runif(n)*10,60+runif(n)*10,25+runif(n)*10,40+runif(n)*10,35-runif(n)*10,35+runif(n)*10)
colnames(df) <-c("id","beige.min","beige.max","gray.min","gray.max","red.min","red.max")
#Create chart
plot(x=df$id,y=NULL,ylim=range(df[,-1]), type="n") #blank chart, ylim is the range of the data
rect(df$id-0.5,df[,2],df$id+0.5,df[,3],col="beige", border=FALSE) #first layer
rect(df$id-0.5,df[,4],df$id+0.5,df[,5],col="gray", border=FALSE) #second layer
rect(df$id-0.5,df[,6],df$id+0.5,df[,7],col="darkred", border=FALSE) #third layer
pngに基づいて何が欲しいかは完全には明確ではありませんが、あなたが書いたものに基づいています:
x1 <- c(2,13,4)
y2 <- c(5,23,43)
foo <- data.frame(id=1:3, x1, y2)
library(ggplot2)
ggplot(data=foo) + geom_rect(aes(ymin=x1, ymax=y2, xmin=id-0.4, xmax=id+0.4))