2016-05-03 5 views
1

各プロットのサンプル数を含むボックスプロットを作成しようとしています。 2つの変数に関する情報を表示します。私のコードは次のようになります:ボックスプロットの注釈として因子情報を追加

give.nint <- function(SCPT){return(c(y = median(SCPT) * 1.06, label = length(SCPT)))} 

ggplot(aes(y = speed, x = LITH, fill = SET), data = SCPT) + 
    geom_boxplot() + 
    stat_summary(fun.data = give.nint, geom = 'text') + 
    stat_summary(fun.data = give.nloc, geom = 'text') 

これは機能します! nintはSCPTテーブルのサンプル数を表します。

今私は別のものをプロットしたいと思います。すべてのサンプルは、いくつかのサイトまたは場所に分散しています(したがって、nloc)。この数字は、私のボックスプロットに表示する2番目の数字です。場所は、テーブル(またはXおよび/またはY)の[名前]列を使用して識別できます。私は場所ごとのサンプル数を決定する。

give.nloc <- function(SCPT){return(c(y = median(SCPT) * 0.94, label = length(unique(SCPT$Name))))}  #[FIRST ATTEMPT] 
give.nloc <- function(SCPT){return(c(y = median(SCPT) * 0.94, label = length(unique(SCPT[,2]))))}  #[SECOND ATTEMPT] 

ggplot(aes(y = speed, x = LITH, fill = SET), data = SCPT) + 
    geom_boxplot() + 
    stat_summary(fun.data = give.nint, geom = 'text') + 
    stat_summary(fun.data = give.nloc, geom = 'text') 

これらの機能はnintと非常によく似ていますが、どういうわけかこのようなラベルを定義することはできません。

は私の最初の試みで、私はこの警告メッセージが表示されました:

計算はstat_summary()に失敗しました:

:$演算子は、第二の試みは、この警告メッセージが生じた 原子ベクトル

無効です

計算に失敗しましたstat_summary():寸法が正しくありません

私は、すべてのリッチセットの組み合わせの数を含む別の列をデータフレームに追加することを考えています(これはaes()の要素なので、リスセットの組み合わせごとにボックスがプロットされます) )しかし、私はむしろできるだけクリーンなデータを保つだろう...あなたは何か考えている?

私のテーブルのデータの一部を分かりやすくするために、この質問に関係のない変数をいくつか省略しました。

'data.frame': 4857 obs. of 10 variables: 
$ SET : Factor w/ 2 levels "2014","2015": 2 2 2 2 2 2 2 2 2 2 ... 
$ Name : chr "SITE1" "SITE1" "SITE1" "SITE1" ... 
$ X  : num 111221 111221 111221 111221 111221 ... 
$ Y  : num 416143 416143 416143 416143 416143 ... 
$ speed  : num 150 150 140 120 ... 
$ STRAT : chr "Q" "Q" "R" "R" ... 
$ LITH : chr "A" "B" "B" "B" ... 

答えて

0

声明median(SCPT)SCPTがベクトルであることを示しています。実際にベクトルであれば、警告メッセージは意味をなさない

サマリー関数は、値の単一のベクトルに対してのみ動作します。要約に多くの変数を組み込む場合は、stat_summaryをソリューションとは考えないでください。

+0

私は私の質問で(重要な)文章を削除しました。 give.nintのために、関数は正常に動作します。私はgive.nlocのためのエラーメッセージを得るだけです(それをプロットしようとしているとき、そして単独ではありません!)。私は問題がラベルの中にあると思う。 –

+0

'give.nint'では、' SCPT'に 'median'と' length'を使います。これはベクトルには意味があります。 'give.nloc'(1回目と2回目の試み)では、data.frameのように' SCPT'を参照します。 'SCPT'が実際にdata.frameだった場合、' give.nint'の 'median(SCPT)'はエラーを生成します。 – ellebaek

+0

ああ、それでは、速度データ(ベクトル)の中央値と長さを使用します。そして、nlocでは、テーブルから別の列の情報が必要ですが、関数は表全体ではなく「速度」に関するデータしか受け取っていませんが、正しいのですか? 次に、適切な情報(STRAT-LITHの組み合わせごとに固有の場所の数)を見つけ、これをラベルとしてプロットする別の方法を見つけるべきです。 –

関連する問題