1

14 変数の 407 個の観測値のデータフレームがあります。ggplot2 またはその他のグラフィックスを使用すると、ある変数と別の変数の散布図を簡単に作成して、パターンを観察できます。

プロット内で作成されるパターンのために関心のある散布図のいくつかのポイントを強調表示し、データフレームから関連情報を呼び出すことができるようにしたいと考えています。これを行うことができるパッケージはありますか?

データフレーム内には、プロット内の興味深い点のグループを区別できる変数は他にありません。これにより、問題がはるかに簡単になります。

これは私が思っているよりも大きな問題である可能性があることを認識しており、正しい方向への指針に感謝しています!

どうもありがとう!ニッキー

4

3 に答える 3

1

identify()ベース R とiplotsパッケージの2 つのオプションがあります。

まず、 を使用して、クリックしたときにidentify()ポイントを識別してラベルを付けることができます。plot()

data(cars)
plot(cars)
interesting <- identify(cars)

プロットをクリックすると、最も近いデータ ポイントが検索され、そのインデックスが返されます。デフォルトでは (plot = FALSE 引数を追加しない限り)、そのポイントにインデックスのラベルが付けられます。

ここに画像の説明を入力

マウスのセカンダリ ボタンをクリックしてメニューから [停止] を選択するか、グラフィック ウィンドウで [停止] を選択して、識別プロセスを停止します。出力をinterestingという名前の変数に保存したので、ポイントを簡単に調べることができます:

cars[interesting,]
#    speed dist
# 19    13   46
# 23    14   80
# 44    22   66

非常に優れたiplotsインタラクティブなリンク プロットを行うパッケージは、より洗練されたソリューションを提供します。

library(iplots)
data(iris)
iplot(iris$Sepal.Length,iris$Petal.Length)
ihist(iris$Sepal.Width)

iplots を使用すると、1 つのプロットでデータを強調表示し、すべてのプロットで色を変更できます。ここでは、下のプロットで赤い点を選択し、両方のプロットで色を変更しています。

ここに画像の説明を入力

データのサブセットを強調表示した後、次のように、現在選択されているポイントを決定できますiset.selected()

iris[iset.selected(),]
#     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
# 85           5.4         3.0          4.5         1.5 versicolor
# 91           5.5         2.6          4.4         1.2 versicolor
# 54           5.5         2.3          4.0         1.3 versicolor
# etc

14 個の変数があるため、複数のiplot()散布図を使用する方が を使用するよりも効果的ですidentify()

于 2013-01-21T15:14:10.153 に答える
1

あなたが望むのは、散布図マトリックスと対話することだと思います。どのようにこれを行うことができるかわかりませんggplot2が、ラティスを使用すると簡単に行うことができますtrellis.focus..

たとえば、これを試すことができます:

super.sym <- trellis.par.get("superpose.symbol")
splom(~iris[1:4], groups = Species, data = iris,      ## splom will draw scatter plots
       panel = panel.superpose,                       ## in iris data since you don't provide 
      key = list(title = "Three Varieties of Iris",   ## reproducible example
                 columns = 3, 
                points = list(pch = super.sym$pch[1:3],
                             col = super.sym$col[1:3]),
                 text = list(c("Setosa", "Versicolor", "Virginica"))))

次に、相互作用部分:

trellis.focus('panel', 1, 1)                                 ## get the focus
idx <- panel.link.splom(pch=13, cex=0.6, col='green')        ## 

逃げるよりもいくつかのポイントを選択します。idx で結果を取得します。

 idx
[1]  59  21 139  84  78  92
于 2013-01-21T15:14:23.703 に答える
1

ggplot2 を使用してこれを行う方法はないと思いますが、これを可能にする他のツール (ブラッシングと呼ばれることが多い) があります。

Rggobi パッケージは、ブラッシング (および回転やその他の多くのこと) を行う ggobi プログラムへのインターフェイスです。R から ggobi にデータを送信し、ggobi でブラシをかけ、R でブラシバックされたポイントにアクセスできます。

TeachingDemos パッケージのTkBrush関数は、散布図マトリックスを作成し、ポイントをブラッシングできるようにし (すべてのパネルでブラッシングされて表示されます)、ブラッシングされたポイントに関する情報を返します。HTkIdentify同じパッケージ内の関数は、現在ホバーされているポイントに関する情報を表示します。これは複数行の情報である可能性がありますが、結果は返されません。

iplots パッケージは、@MattBagg によって実証された別のオプションです。

データ フレームのどの行が選択された ggplot2 プロットの一部に対応するかを把握するツールを作成することは可能ですが、データは非常に多くのステップを経ます (結果はアクセス/理解が簡単ではありません)。元のデータ フレームに戻すのは簡単ではありません。

おそらく他のツール (おそらく R GUI) がありますが、上記で始めることができます。

于 2013-01-21T19:48:03.630 に答える