2017-05-26 14 views
-3

私はlistの40の数値ベクトルを持っています。私の質問は、各ベクトルに対して1つのボックスプロットを行い、4つのボックスプロットをx軸の1つの位置にグループ化する方法です。(可変長)ベクトルのリストからボックスプロットを作成する方法

x軸には10ティックがあり、すべてのティックには4つのボックスプロットがあります。さらに、グループ内の順序でボックスプロットを色付けしたいと思います。ここで

データの小さなサンプル(2グループ)である:

list(
    c(1, 3, 3, 4, 2, 1, 1, 2), 
    c(2, 1, 1, 1, 1, 2, 33, 12), 
    c(5, 3, 2, 1, 2, 3, 4, 5), 
    c(4, 4, 2, 2, 2, 1, 3, 4), 
    c(2, 2, 21, 1, 4), 
    c(3, 3, 1, 2, 3), 
    c(2, 2, 3, 1, 1), 
    c(6, 5, 3, 4, 5)) -> 
ll 
+0

おそらくあり(ggplot 'のようなものを持つシンプルなソリューションです)+ geom_bar(AES(ユニット、塗りつぶし=法)、位置= "かわす")'が、あなたは、より正確な提供する必要があると思います例えば、「類似の長さ」とは、実際のデータのサンプルを提供してください。 – liborm

+0

私はなぜ3つの否定的な得点を得たのかわかりません。私が見つけた関連する答えは、すべての行が同様のサイズを持つデータフレーム用です。 – Eric

+1

下の票はおそらく、データの種類と形が正確に理解できるように英雄的な努力を要するからです。どのような出力が必要かをはっきりと理解していますが、入力データについては本当に混乱しています。それは 'list'sの' list'ですか、 'data.frame'ですか? 2つの 'data.frame'がありますか? – liborm

答えて

1

4タプルに数値ベクトル、グループそれのリストから箱ひげ図を作成するには、このような何かを実行する必要があります。

要するに
library(tidyverse) 

# ll is the list of vectors 
map_df(ll, 
    function(x) data.frame(val = x), 
    .id = "row") %>% 
    mutate(
    row = as.numeric(row) - 1, 
    grp = floor(row/4) %>% as.factor, 
    method = (row %% 4) %>% as.factor) %>% 
    ggplot() + 
    geom_boxplot(aes(grp, val, fill=method), position = "dodge") 

map_dfは、一つの列を有するデータフレームに各ベクトルを変換し、それら全てを行結合、元の行から来た場所を識別するrowという名前の列を追加、mutaterow 0にBAを変換はプロットを初期化し、geom_boxplotはテーブルからデータを取ってボックスプロットレイヤーを追加します。


サンプルデータの出力(異常値のために少し醜い)。

output for the sample data

+0

ありがとう@liborm。 – Eric

関連する問題