5

all次のようなデータフレームがあります。

http://pastebin.com/Xc1HEYyH

次に、x軸の列見出しと、データポイントとしてそれぞれの値を使用して、散布図を作成します。例えば:

7|                 x  
6|          x      x  
5|  x       x      x     x    
4|  x       x            x 
3|                             x      x  
2|                             x      x
1|
 ---------------------------------------
    STM    STM    STM   PIC   PIC    PIC
   cold   normal  hot  cold  normal  hot

これは簡単なはずですが、どうすればよいかわかりません。

よろしく

4

3 に答える 3

8

ハドリーを使用してプロットする場合の基本的な考え方は、次ggplot2の形式のデータを取得することです。

        x          y
col_names     values

meltこれは、Hadley の関数を使用して実行できますreshape2。可能な?melt引数を確認するために行います。ただし、ここでは data.frame 全体を溶かしたいので、

melt(all) 
# this gives the data in format:
#   variable value
# 1 STM_cold   6.0
# 2 STM_cold   6.0
# 3 STM_cold   5.9
# 4 STM_cold   6.1
# 5 STM_cold   5.5
# 6 STM_cold   5.6

ここで、xvariableyなり、対応するvalue列になります。

require(ggplot2)
require(reshape2)
ggplot(data = melt(all), aes(x=variable, y=value)) + 
             geom_point(aes(colour=variable))

色が必要ない場合は、aes(colour=variable)geom_point 内を削除してgeom_point().

ここに画像の説明を入力

編集:おそらくここで言及する必要がありますが、それを置き換えることもできgeom_pointますgeom_jitter

ここに画像の説明を入力

于 2013-02-27T10:37:08.267 に答える
5

考慮すべき 2 つのオプションがあります。dotplot「lattice」パッケージからの最初の使用:

library(lattice)
dotplot(values ~ ind, data = stack(all))

ここに画像の説明を入力

2 番目はdotchart、ベース R の「グラフィックス」オプションを使用します。関数を使用するには、次のdotchartようにラップする必要がありdata.frameますas.matrix

dotchart(as.matrix(all), labels = "")

この図のポイントは「ジッター」ではなく、記録された順序で示されていることに注意してください。つまり、最低点が最初のレコードで、最高点が最後のレコードです。この例のプロットを拡大すると、16 本の非常にかすかな水平線があることがわかります。各行は、各列の 1 つの行を表します。したがって、「STM_cold」または値を持つその他の変数のドットを見ると、NA利用可能なデータがない上部にいくつかの空白行が表示されます。

値が時系列で記録されている場合は時間の経過に伴う傾向が示される可能性があるため、これには利点がありますが、ソース データ フレームに行が多すぎる場合は欠点になる可能性もあります。

ここに画像の説明を入力

于 2013-02-27T11:25:20.037 に答える
3

楽しみのためだけにベース R グラフィックスを使用した、ちょっとしたマニュアル バージョンです。

データを取得します。

test <- read.table(text="STM_cold STM_normal STM_hot PIC_cold PIC_normal PIC_hot
6.0 6.6 6.3 0.9 1.9 3.2
6.0 6.6 6.5 1.0 2.0 3.2
5.9 6.7 6.5 0.3 1.8 3.2
6.1 6.8 6.6 0.2 1.8 3.8
5.5 6.7 6.2 0.5 1.9 3.3
5.6 6.5 6.5 0.2 1.9 3.5
5.4 6.8 6.5 0.2 1.8 3.7
5.3 6.5 6.2 0.2 2.0 3.5
5.3 6.7 6.5 0.1 1.7 3.6
5.7 6.7 6.5 0.3 1.7 3.6
NA  NA  NA  0.1 1.8 3.8
NA  NA  NA  0.2 2.1 4.1
NA  NA  NA  0.2 1.8 3.3
NA  NA  NA  0.8 1.7 3.5
NA  NA  NA  1.7 1.6 4.0
NA  NA  NA  0.1 1.7 3.7",header=TRUE)

基本プロットを設定します。

plot(
     NA,
     ylim=c(0,max(test,na.rm=TRUE)+0.3),
     xlim=c(1-0.1,ncol(test)+0.1),
     xaxt="n",
     ann=FALSE,
     panel.first=grid()
     )

axis(1,at=seq_along(test),labels=names(test),lwd=0,lwd.ticks=1)

いくつかの点をプロットし、いくつかの x 軸をjitter使用して、それらが互いに重ならないようにします。

invisible(
  mapply(
        points,
        jitter(rep(seq_along(test),each=nrow(test))),
        unlist(test),
        col=rep(seq_along(test),each=nrow(test)),
        pch=19
        )
)

結果:

ここに画像の説明を入力

編集

jitter以下のAnanda とのコメントで説明されているように、ポイントでアルファ透明度を使用して を取り除く例を次に示します。

invisible(
  mapply(
        points,
        rep(seq_along(test),each=nrow(test)),
        unlist(test),
        col=rgb(0,0,0,0.1),
        pch=15,
        cex=3
        )
)

ここに画像の説明を入力

于 2013-02-27T12:22:05.423 に答える