質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
ggplot2

ggplot2は、統計解析向けのプログラミング言語及びその開発実行環境であるR言語のグラフィック作成用のライブラリです。

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Q&A

解決済

1回答

3442閲覧

<R> 全ての列のヒストグラムを一括で出力する方法に関して

mourinho384

総合スコア8

ggplot2

ggplot2は、統計解析向けのプログラミング言語及びその開発実行環境であるR言語のグラフィック作成用のライブラリです。

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

0グッド

0クリップ

投稿2020/08/25 06:37

お世話になっております。R初心者のYukiです。

#全ての列のヒストグラムを一括で出力する方法に関して

お伺いしたいのですが、

df <- data.frame( df01 = c(1, 2, 3, 4, 5,1, 2, 3, 4, 5,1, 2, 3, 4, 5), df02 = c(200, 203, 193, 193, 187,192, 211, 223, 232, 243, 198, 200, 201, 204, 203), df03 = c(4.2, 3.1, 3.2, 3.6, 3.5,4.1, 3.5, 3.6, 4.0, 4.3,4.2, 4.4, 4.3, 4.3, 4.1), df04=c(2.3,NA,6.0,5.2,NA,2.8,6.2,4.5,NA,2,3,1,4.2,NA,NA)) df

というデータフレームがあるとして、df01-04すべての列のヒストグラムを”一括で”出したいと考えています。

a<-paste0("df",sprintf("%02d",seq(1,4)))

で列名を取得して、

for (i in a){ ggplot(df, aes(x = i))+geom_histogram(stat='count',binwidth = 40) }

のfor ループで出力しようとしたのですがうまくいきません。
https://data-science.gr.jp/implementation/ida_r_histogram.html
などを参考に作成したのですが、進まず困っています。

どなたかご教授いただけないでしょうか。よろしくお願いします。 Yuki

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

まず「縦持ち」データを作ります。

Ref:
【tidyr】gather?, spread? もう古い。時代はpivot - Qiita

df <- data.frame( df01 = c(1, 2, 3, 4, 5,1, 2, 3, 4, 5,1, 2, 3, 4, 5), df02 = c(200, 203, 193, 193, 187,192, 211, 223, 232, 243, 198, 200, 201, 204, 203), df03 = c(4.2, 3.1, 3.2, 3.6, 3.5,4.1, 3.5, 3.6, 4.0, 4.3,4.2, 4.4, 4.3, 4.3, 4.1)) library(tidyverse) df2 <- pivot_longer(df, names_to="Sample", cols=1:ncol(df))
head(df2) # A tibble: 6 x 2 Sample value <chr> <dbl> 1 df01 1 2 df02 200 3 df03 4.2 4 df01 2 5 df02 203 6 df03 3.1

このようにグラフの分割に使う「サンプル名」を独立した列に持たせておき、これをaesに利用します。

ggplot(df2, aes(x=value, fill=Sample)) + geom_histogram(binwidth=40) + scale_fill_manual(values=c("df01"="red", "df02"="orange", "df03"="purple")) + facet_grid(Sample~.)

facet_grid()でグラフの分割。もちろん一枚のグラフの上に全部をオーバーラップさせることもできます。scale_full_widthは、こういう風に色を変えることも出来ますという例です。
この辺はまあお好みで。

投稿2020/08/25 08:27

KojiDoi

総合スコア13671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問