サーチ…


備考

ggplot2は完全なリファレンスWebサイトhttp://ggplot2.tidyverse.org/があります

たいていの場合、プロットされたデータの構造や内容(例: data.frame )は、 data.frameプロット内で調整するよりもdata.frameです。

RStudioは、 ここで見つけることができる非常に有用な "ggplot2を使ったデータビジュアライゼーション"のチートシートを公開しています

散布図

次のように、組み込み虹彩データセットを使用して簡単な散布図をプロットします。

library(ggplot2)
ggplot(iris, aes(x = Petal.Width, y = Petal.Length, color = Species)) + 
  geom_point()

これは与える: アイリスデータセットを使用したサンプル散布図

複数のプロットを表示する

異なるfacet機能を使用して1つの画像に複数のプロットを表示する。この方法の利点は、すべての軸がチャート全体で同じスケールを共有するため、一目でそれらを比較することが容易になります。 ggplot2含まれるmpgデータセットを使用します。

グラフを1行ずつ折り返します(正方形のレイアウトを作成しようとします)。

ggplot(mpg, aes(x = displ, y = hwy)) + 
  geom_point() + 
  facet_wrap(~class)

1つの行、複数の列に複数のグラフを表示する:

ggplot(mpg, aes(x = displ, y = hwy)) + 
  geom_point() + 
  facet_grid(.~class)

1つの列、複数の行に複数のグラフを表示する:

ggplot(mpg, aes(x = displ, y = hwy)) + 
  geom_point() + 
  facet_grid(class~.)

グリッド内の複数のグラフを2つの変数で表示:

ggplot(mpg, aes(x = displ, y = hwy)) + 
  geom_point() + 
  facet_grid(trans~class) #"row" parameter, then "column" parameter

プロット用にデータを準備する

ggplot2は、長いデータフレームに最適です。次のサンプルデータは、各カテゴリに列があるため、幅広く記述された形式で20日間の菓子の価格を表します。

set.seed(47)
sweetsWide <- data.frame(date      = 1:20,
                         chocolate = runif(20, min = 2, max = 4),
                         iceCream  = runif(20, min = 0.5, max = 1),
                         candy     = runif(20, min = 1, max = 3))

head(sweetsWide)
##   date chocolate  iceCream    candy
## 1    1  3.953924 0.5890727 1.117311
## 2    2  2.747832 0.7783982 1.740851
## 3    3  3.523004 0.7578975 2.196754
## 4    4  3.644983 0.5667152 2.875028
## 5    5  3.147089 0.8446417 1.733543
## 6    6  3.382825 0.6900125 1.405674

変換するsweetsWide長いと共に使用するためのフォーマットにggplot2 、基地Rからのいくつかの有用な機能、およびパッケージreshape2data.table及びtidyr (時系列で)使用することができます。

# reshape from base R
sweetsLong <- reshape(sweetsWide, idvar = 'date', direction = 'long', 
                      varying = list(2:4), new.row.names = NULL, times = names(sweetsWide)[-1])

# melt from 'reshape2'
library(reshape2)
sweetsLong <- melt(sweetsWide, id.vars = 'date')

# melt from 'data.table'
# which is an optimized & extended version of 'melt' from 'reshape2'
library(data.table)
sweetsLong <- melt(setDT(sweetsWide), id.vars = 'date')

# gather from 'tidyr'
library(tidyr)
sweetsLong <- gather(sweetsWide, sweet, price, chocolate:candy)

すべてが同様の結果を出します:

head(sweetsLong)
##   date     sweet    price
## 1    1 chocolate 3.953924
## 2    2 chocolate 2.747832
## 3    3 chocolate 3.523004
## 4    4 chocolate 3.644983
## 5    5 chocolate 3.147089
## 6    6 chocolate 3.382825

参照してください長いと広いフォーム間のデータリシェイプ 長いワイドフォーマットの間でデータを変換の詳細については、を。

結果として得られるsweetsLongは、価格の列とスイートの種類を示す列があります。今プロットははるかに簡単です:

library(ggplot2)
ggplot(sweetsLong, aes(x = date, y = price, colour = sweet)) + geom_line()

お菓子データの折れ線グラフ

水平線と垂直線をプロットする

すべてのカテゴリ変数に共通の水平線を1つ追加する

# sample data
df <- data.frame(x=('A', 'B'), y = c(3, 4))

p1 <- ggplot(df, aes(x=x, y=y)) 
        + geom_bar(position = "dodge", stat = 'identity') 
        + theme_bw()

p1 + geom_hline(aes(yintercept=5), colour="#990000", linetype="dashed")

プロット1

各カテゴリ変数に水平線を1つ追加する

# sample data
df <- data.frame(x=('A', 'B'), y = c(3, 4))

# add horizontal levels for drawing lines
df$hval <- df$y + 2

p1 <- ggplot(df, aes(x=x, y=y)) 
        + geom_bar(position = "dodge", stat = 'identity') 
        + theme_bw()

p1 + geom_errorbar(aes(y=hval, ymax=hval, ymin=hval), colour="#990000", width=0.75)

プロット2

グループ化された棒に水平線を追加する

# sample data
df <- data.frame(x = rep(c('A', 'B'), times=2), 
             group = rep(c('G1', 'G2'), each=2), 
             y = c(3, 4, 5, 6), 
             hval = c(5, 6, 7, 8))

p1 <- ggplot(df, aes(x=x, y=y, fill=group)) 
        + geom_bar(position="dodge", stat="identity")

p1 + geom_errorbar(aes(y=hval, ymax=hval, ymin=hval), 
               colour="#990000", 
               position = "dodge", 
               linetype = "dashed")

プロット3

縦線を追加

# sample data
df <- data.frame(group=rep(c('A', 'B'), each=20), 
                 x = rnorm(40, 5, 2), 
                 y = rnorm(40, 10, 2))

p1 <-  ggplot(df, aes(x=x, y=y, colour=group)) + geom_point()

p1 + geom_vline(aes(xintercept=5), color="#990000", linetype="dashed")

ここに画像の説明を入力

縦と横の棒グラフ

ggplot(data = diamonds, aes(x = cut, fill =color)) +
  geom_bar(stat = "count", position = "dodge")

ここに画像の説明を入力

ggplotオブジェクトに単にcoord_flip()を追加するだけで、横棒グラフを取得することができます:

  ggplot(data = diamonds, aes(x = cut, fill =color)) +
  geom_bar(stat = "count", position = "dodge")+
  coord_flip()

ここに画像の説明を入力

バイオリンプロット

ヴァイオリン・プロットは、垂直面にミラーリングされたカーネル密度の推定値です。これらは、いくつかのディストリビューションを並べて視覚化するために使用できます。ミラーリングは、違いを強調するのに役立ちます。

ggplot(diamonds, aes(cut, price)) +
  geom_violin()

基本的なバイオリンプロット

ヴァイオリンのプロットは、楽器との類似点から名前が付けられています。これは、オーバーレイされたボックスプロットと結合されたときに特に目に見えます。この視覚化は、Tukeyの5つの数字の要約(ボックスプロットとして)と完全な連続密度の見積もり(バイオリン)の両方の根本的な分布を記述する。

ggplot(diamonds, aes(cut, price)) +
  geom_violin() +
  geom_boxplot(width = .1, fill = "black", outlier.shape = NA) +
  stat_summary(fun.y = "median", geom = "point", col = "white")

boxplotによるバイオリンプロット

qplotを使って基本プロットを作成する

qplotは、あまり多くの仕様を必要とせずにデータを常にプロットしようとする、base r plot()関数に似ています。

基本的なqplot

qplot(x = disp, y = mpg, data = mtcars)

ここに画像の説明を入力

色を追加する

qplot(x = disp, y = mpg, colour = cyl,data = mtcars)

ここに画像の説明を入力

よりスムーズに

qplot(x = disp, y = mpg, geom = c("point", "smooth"), data = mtcars)

ここに画像の説明を入力



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow