2017-06-04 6 views
5

GGallyパッケージのggparcoordを使用して平行座標プロットをプロットするときに問題が発生します。 2つのカテゴリ変数があるので、私が可視化で示したいものは、下の画像のようなものです。私はggparcoordgroupColumnであることがわかりました単一の変数にグループ(色)でグループ化することができ、確かにshowPointsを使用して軸上の値をマークすることができますが、これらのマーカーはカテゴリ変数に従っています。私のアイデアを実現するのに役立つ他のパッケージはありますか?複数のカテゴリ変数を使用して平行座標をプロットする方法R

ご連絡いただければ幸いです!ありがとう!

university and country are two categories

+0

が答えよりも進歩しているが、標準化された範囲ではなく各座標の範囲... – Chris

答えて

1

それはあなた自身の並列はあなたに美学をカスタマイズするための柔軟性を提供しますggplot2のプロットを、座標ロールバックすることは難しいことではありません。以下は、組み込みのdiamondsデータフレームを使用したイラストです。

パラレル座標を取得するには、ID列を追加する必要があります。これにより、データフレームの各行を識別できるようになります。これは、ggplotでgroupとして使用します。数字をscaleにする必要があります。プロットするときに、すべて同じ縦軸になるようにしてください。次に、x軸上で必要なすべての列を取得し、それらを「長い」形式に変更する必要があります。 tidyverse/dplyr配管オペレータを使用して、下のすべての作業を行っています。

カテゴリの組み合わせの数を制限した後でも、このプロットが簡単に解釈可能になるには線が絡み合っている可能性が高いため、単にこれを「概念の証明」と見なしてください。うまくいけば、あなたはあなたのデータでより有用なものを作ることができます。私はcolour(行の場合)とfill(ポイントの場合)の美学を以下に使用しました。代わりに、shapeまたはlinetypeを使用することができます。

library(tidyverse) 
theme_set(theme_classic()) 

# Get 20 random rows from the diamonds data frame after limiting 
# to two levels each of cut and color 
set.seed(2) 
ds = diamonds %>% 
    filter(color %in% c("D","J"), cut %in% c("Good", "Premium")) %>% 
    sample_n(20) 

ggplot(ds %>% 
     mutate(ID = 1:n()) %>%    # Add ID for each row 
     mutate_if(is.numeric, scale) %>% # Scale numeric columns 
     gather(key, value, c(1,5:10)),  # Reshape to "long" format 
     aes(key, value, group=ID, colour=color, fill=cut)) + 
    geom_line() + 
    geom_point(size=2, shape=21, colour="grey50") + 
    scale_fill_manual(values=c("black","white")) 

enter image description here

私は前ggparcoordsを使用していないが、(少なくとも機能との私の最初の試行で)簡単なように見えた唯一のオプションは一緒に2つのデータ列を貼り付けました。以下は例です。でも、わずか4カテゴリの組み合わせで、プロットは紛らわしいですが、あなたのデータに強いパターンがある場合、多分それは解釈されます:それが示すようにあなたが投稿何

library(GGally) 

ds$group = with(ds, paste(cut, color, sep="-")) 

ggparcoord(ds, columns=c(1, 5:10), groupColumn=11) + 
    theme(panel.grid.major.x=element_line(colour="grey70")) 

enter image description here

+0

助けてくれてありがとう。 GGallyを使うのではなく、ggplot2を使用して、データを非常にスキニーな長い形式に変換した後に、複数のカテゴリ変数を使って平行座標をプロットしています....しかし、問題は私がこれらのy軸をスケーリングできないことです。実際には、私のプロットにはy軸が1つしかありませんが、テーマグリッドを変更すると、複数のy軸があるようにプロットが表示されます...本当に必要なのは、すべての "y軸が私は、各y軸のスケールが変わる質問に添付した画像のように、より読みやすくプロットすることが可能ですか? – Lexi

関連する問題