2016-11-24 2 views
1

私は分類が必要なdata.frameのリストを得ました。これらのリストを操作し、最終的にデフォルトのフォルダにcsvファイルとしてエクスポートしました。しかし、これらのエクスポートされたデータをより有益なものにするために、グループ化された棒グラフ、または各data.frameオブジェクトの円グラフを生成する方が良いと思います。初心者として、私はまだggplot2パッケージの機能を学んでいるので、これを簡単に行う方法はほとんど分かりません。グループ化された棒グラフを簡単に生成する方法を考えてもらえますか?どのようにしてファイルのリストのための有益な棒グラフを生成できますか?これをどうすればいいのですか?何か案が ?事前に感謝:)csvファイルのリストからグループ化された棒グラフまたは円グラフを生成するにはどうすればいいですか?

再現性のあるデータ:

savedDF <- list(
    bar.saved = data.frame(start=sample(100, 15), stop=sample(150, 15), score=sample(36, 15)), 
    cat.saved = data.frame(start=sample(100, 20), stop=sample(100,20), score=sample(45,20)), 
    foo.saved = data.frame(start=sample(125, 24), stop=sample(140, 24), score=sample(32, 24)) 
) 

dropedDF <- list(
    bar.droped = data.frame(start=sample(60, 12), stop=sample(90,12), score=sample(35,12)), 
    cat.droped = data.frame(start=sample(75, 18), stop=sample(84,18), score=sample(28,18)), 
    foo.droped = data.frame(start=sample(54, 14), stop=sample(72,14), score=sample(25,14)) 
) 

ので、私は、このパイプラインからのcsvファイルのリストを取得しています:

comb <- do.call("rbind", c(savedDF, dropedDF)) 
cn <- c("letter", "saved","seq") 
DF <- cbind(read.table(text = chartr("_", ".", rownames(comb)), sep = ".", col.names = cn), comb) 
DF <- transform(DF, updown = ifelse(score>= 12, "stringent", "weak")) 
by(DF, DF[c("letter", "saved", "updown")], 
    function(x) write.csv(x[-(1:3)], 
         sprintf("%s_%s_%s.csv", x$letter[1], x$updown[1], x$saved[1]))) 

は、より良いエクスポートされたデータを理解するために、私はグループ化されたバーを生成すると思います各data.frameオブジェクトのプロットと円グラフは非常に参考になります。

希望のプロットでは、各data.frameオブジェクトの各csvファイルのフィーチャの数を確認します。誰も私にこの仕事をするためのアイデアを与えることができますか?

ggplot2パッケージを使用すると、これを簡単に行うことができますか?これをより効率的に行う方法はありますか?ありがとうございます

+0

棒グラフはどのように見えますか?例えば、あなたの 'DF'には、バーで説明したいいくつかの変数がありますか? (例:x = seq、y = score) –

+0

変数の数のように機能の数は? –

+1

@ Jerry.Shadの行は通常、変数ではなく観測値です。 – Axeman

答えて

4

私が正しく理解していれば、これはおおまかな解決策としてあなたのために働くかもしれません。これが受け入れられるかどうか私に知らせるためにコメントしてください。将来的には、データとともに粗いスケッチを提供して、達成しようとしていることを示すことができれば、それは良い考えです。

library(dplyr) 
library(ggplot2) 

plot_data <- DF %>% 
    group_by(letter, saved, updown) %>% 
    tally %>% 
    group_by(saved, updown) %>% 
    mutate(percentage = n/sum(n)) 

ggplot(plot_data, aes(x = saved, y = n, fill = saved)) + 
    geom_bar(stat = "identity") + 
    facet_wrap(~ letter + updown, ncol = 2) 

enter image description here

ご希望の場合は、必ず明示的facet_grid(letter ~ updown)facet_wrap(~ letter + updown, ncol = 2)を変更することができます。

それとも、それをこのように見ることができる:(クリーンアップとラベリングはあなた次第です)パイについて

ggplot(plot_data, aes(x = letter, y = n)) + 
    geom_bar(stat = "identity") + 
    facet_wrap(~updown+saved, ncol = 2) 

enter image description here

ggplot(plot_data, aes(x = 1, y = percentage, fill = letter)) + 
    geom_bar(stat = "identity", width =1) + 
    facet_wrap(~updown+saved, ncol = 2) + 
    coord_polar(theta = "y") + 
    theme_void() 

enter image description here

バー、4インタラクションのパイにはちょっとした操作が必要ですあなたのデータの:

library(dplyr) 
library(tidyr) 
library(ggplot2) 

plot_data <- DF %>% 
    unite(interaction, saved, updown, sep = "-") %>% 
    group_by(letter, interaction) %>% 
    tally %>% 
    mutate(percentage = n/sum(n)) %>% 
    filter(letter == "bar") 

ggplot(plot_data, aes(x = 1, y = percentage, fill = interaction)) + 
    geom_bar(stat = "identity", width =1) + 
    coord_polar(theta = "y") + 
    theme_void() 

enter image description here

あなたは本当にdplyrtidyrggplot2パッケージになっているはずです。それらのドキュメントとビネットを読んで、exmaplesを通して作業してください。学習する最善の方法は、行うことです。

+0

私は同様に円グラフを得ることができますか?ありがとうございました:) – Jerry

+0

これは本当にクールです。私は間違いなくあなたの推薦をフォローアップします。どうもありがとう ;) – Jerry

関連する問題