2

何時間も探しましたが、これを行う機能が見つかりません。

次のようなプロットを生成するにはどうすればよいですか

http://i.imgur.com/C2BXYPc.png

配列x1 = c(2,13,4)とがあるとしましょうy2=c(5,23,43)。高さが 2-5,13-23 の 3 つのブロックを作成したい...

この問題にどのようにアプローチしますか?どの組み込み関数を見るべきかについて、正しい方向に向けられることを願っていますか?

4

2 に答える 2

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

レイヤー

于 2013-02-23T20:34:49.707 に答える
2

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))

ここに画像の説明を入力してください

于 2013-02-22T06:28:15.040 に答える