2017-10-05 14 views
0
age <- rnorm(100, 0:100) 
freq <- rnorm(100, 0:1) 
char1<-stringi::stri_rand_strings(100, length = 1, pattern = "[abc]") 
char2<-stringi::stri_rand_strings(100, length = 1, pattern = "[def]") 
char3<-stringi::stri_rand_strings(100, length = 1, pattern = "[def]") 
char3<-stringi::stri_rand_strings(100, length = 1, pattern = "[ghi]") 
dftest <- data.frame(age, freq, char1, char2, char3) 
dflist <- list(dftest, dftest, dftest, dftest, dftest) 

これは、私が抱えている問題を示すサンプルデータフレームを作成します。データフレームの複数の列の特性に基づいて散布図を作成するにはどうすればよいですか?

このリストの各データフレームについて、年齢vs freqの散布図を作成したいが、 "char#"列の値に基づいて点の色を変えたい。私はまた、これらの別々の特性のそれぞれに値のための別々のトレンドラインが必要です。

また、これは、異なるchar列のさまざまな特性の組み合わせに基づいて実行できるようにしたいと考えています。この例は、それぞれ異なるトレンドラインを持つ3 * 3 = 9の別々の色です。

これはどのように行われますか?

これは再現性があり、十分にクリアであることを希望します。私は数回しか投稿していないので、まだフォーマットに慣れています。

ありがとうございます!

+0

、データフレームのリストには、すべて同じであるので、あなたは、これらを別の色の場合でも、あなたは1点のセットしか見ることができません。これとは違う実際のデータがあると仮定すると、最初に各データフレームにid列を追加し、それらをすべて一緒にrbindし、色を 'id'にマップします。あなたの提供する例では、あなたのIDは1-5 – Mako212

+0

ggplot2を見てください。その問題に最適なサウンド。ファセットを使用してみてください。 – Jimbou

答えて

0

私たちは、異なる色でポイントを表示することができます、データフレームを作成することから始めレッツ:

df2 <- data.frame(age=rnorm(200,0:100), 
    freq=rnorm(200,0:1),id=rep(1:2,each=100)) 

その後、我々はそうのようplotことができます。

plot(dflist2$age,dflist2$freq, col=dflist2$id, pch=16) 

我々が等しい(色)colを設定idになります(これは各データフレームを表します)。 pchはポイントタイプ(実線のドット)です。

0

データの準備にはdplyrを、プロットにはggplotを試してみることができます。すべての機能がtidyverseパッケージを経由してロードされます:あなたが提供されたデータで

library(tidyverse) 
# age vs freq plus trendline for char1 
as.tbl(dftest) %>% 
    ggplot(aes(age, freq, color=char1)) + 
    geom_point() + 
    geom_smooth(method = "lm") 

enter image description here

# age vs freq plus trendline for combinations of char columns 
as.tbl(dftest) %>% 
    unite(combi, char1, char2, char3, sep="-") %>% 
    ggplot(aes(age, freq, color=combi)) + 
    geom_point() + 
    geom_smooth(method = "lm") 
# no plot as too many combinations make the plot to busy 
dflist %>% 
    bind_rows(.id = "df_source") %>% 
    ggplot(aes(age, freq, color=char1)) + 
    geom_point() + 
    geom_smooth(method = "lm", se=FALSE) + 
    facet_wrap(~df_source) 

enter image description here

+0

申し訳ありませんが、私はおそらくこの質問に言及する必要がありますが、グラフ自体に各線形モデルのスピアマン相関p値とrhoを表示することは可能ですか? – user8384020

+0

はい可能です。 'ggpubr'または' ggsignify'パッケージを見てください。 'lm'はパラメトリックメソッドであることに注意してください。 – Jimbou

関連する問題