web-dev-qa-db-ja.com

箱ひげ図としてではなく、因子によってグループ化されたデータをプロットする方法

Rでは、与えられたベクトル

_casp6 <- c(0.9478638, 0.7477657, 0.9742675, 0.9008372, 0.4873001, 0.5097587, 0.6476510, 0.4552577, 0.5578296, 0.5728478, 0.1927945, 0.2624068, 0.2732615)
_

そして要因:

_trans.factor <- factor (rep (c("t0", "t12", "t24", "t72"), c(4,3,3,3)))
_

係数で定義されているようにデータポイントがグループ化されたプロットを作成したいと思います。したがって、カテゴリはx軸上にある必要があり、同じカテゴリの値は同じx座標を持つ必要があります。

単純にplot(trans.factor, casp6)を実行すると、ほとんど私がやりたいことができます。箱ひげ図が作成されますが、個々のデータポイントを確認します。

12
amarillion
require(ggplot2)
qplot(trans.factor, casp6)
13
Jonathan Chang

私は次の解決策を見つけます:

stripchart(casp6~trans.factor,data.frame(casp6,trans.factor),pch=1,vertical=T)

シンプルでダイレクト。

(例えば http://www.mail-archive.com/[email protected]/msg34176.html を参照してください)

4
mjtj

facetsを使用して、_ggplot2_でそれを行うことができます。 「因子によって定義されたデータポイントがグループ化されたプロットを作成したい」を読んだとき、最初に思いついたのはfacets

しかし、この特定のケースでは、より高速な代替策は次のとおりです。

_plot(as.numeric(trans.factor), casp6)
_

そして、後でプロットオプションを使用してプレイできます(typefgbg...)。ただし、_ggplot2_を使用することをお勧めします。コードがすっきりしていて、機能が優れているため、オーバープロットを回避できます...など。

要因に対処する方法を学びます。 _trans.factor_がfactorのクラスだったので(皮肉にも、その方法で名前を付けていたのでさえも)plot(trans.factor, casp6)を評価するとバープロットが表示されました...そして_trans.factor_が宣言されました- beforeplot()関数内の連続(数値)変数...したがって、plot()はデータをサブセット化し、各部分に基づいて箱ひげ図を描く必要性を「感じます」(連続を宣言した場合)最初に変数を使用すると、通常のグラフが表示されますよね?)。一方、_ggplot2_は、因子を別の方法で解釈します... "通常の"、数値変数(これは、 Jonathan Changが提供する構文では、_ggplot2_)でより複雑なことを行う場合はgeomを指定する必要があります。

しかし、1つの連続変数と1つの因子があり、因子レベルで定義された連続変数の各部分にヒストグラムを適用するとします。これは、基本的なグラフ機能によって物事が複雑になる場所です。

_# create dummy data
> set.seed(23)
> x <- rnorm(200, 23, 2.3)
> g <- factor(round(runif(200, 1, 4)))
_

基本グラフを使用することにより(_package:graphics_):

_par(mfrow = c(1, 4))
tapply(x, g, hist)
_

ggplot2の方法:

_qplot(x, facets = . ~ g)
_

コードの1行でgraphicsを使用してこれを実行してみてください(セミコロンとカスタム関数は不正行為と見なされます!):

_qplot(x, log(x), facets = . ~ g)
_

私があなたを退屈させずに助けてくれたことを願いましょう!

敬具、
aL3xa

4
aL3xa

追加のパッケージは不要

私はパーティーに少し遅れましたが、標準のプロット関数で非常に簡単に目的の結果を得ることができることがわかりました-単純に係数を数値に変換します:

plot(as.numeric(trans.factor), casp6)
3
Christallkeks

次のようにすることで、ラティスグラフィックを使用して目的のものに近づくことができる場合があります。

library(lattice)    
xyplot(casp6 ~ trans.factor, 
       scales = list(x = list(at = 1:4, labels = levels(trans.factor))))
3
Greg

より良い解決策があると思います(数日前にワークショップで書いたものです)が、それは私の心をゆがめました。これがベースグラフィックスの醜い代替品です。 x軸に自由に注釈を付けてくださいad libitum。個人的には、グレッグのソリューションが好きです。

plot(0, 0, xlim = c(1, 4), ylim = range(casp6), type = "n")
points(casp6 ~ trans.factor)
3
Roman Luštrik