ggplot2-発散チャート

前の章では、「ggplot2」パッケージを使用して作成できるさまざまなタイプのチャートについて説明しました。ここでは、分岐棒グラフ、ロリポップグラフなど、同じもののバリエーションに焦点を当てます。まず、発散棒グラフの作成から始めます。従う手順を以下に示します。

データセットを理解する

必要なパッケージをロードし、mpgデータセット内に「carname」という新しい列を作成します。

#Load ggplot
> library(ggplot2)
> # create new column for car names
> mtcars$`car name` <- rownames(mtcars)
> # compute normalized mpg
> mtcars$mpg_z <- round((mtcars$mpg - mean(mtcars$mpg))/sd(mtcars$mpg), 2)
> # above / below avg flag
> mtcars$mpg_type <- ifelse(mtcars$mpg_z < 0, "below", "above")
> # sort
> mtcars <- mtcars[order(mtcars$mpg_z), ]

上記の計算では、車の名前の新しい列を作成し、ラウンド関数を使用して正規化されたデータセットを計算します。「type」機能の値を取得するために、上下のavgフラグを使用することもできます。後で、値を並べ替えて必要なデータセットを作成します。

受信した出力は次のとおりです-

以下に説明するように、値を因数に変換して、特定のプロットでソートされた順序を保持します-

> # convert to factor to retain sorted order in plot.
> mtcars$`car name` <- factor(mtcars$`car name`, levels = mtcars$`car name`)

得られた出力は以下のとおりです。

発散棒グラフ

次に、必要な座標として使用される、前述の属性を使用して発散棒グラフを作成します。

> # Diverging Barcharts
> ggplot(mtcars, aes(x=`car name`, y=mpg_z, label=mpg_z)) +
+ geom_bar(stat='identity', aes(fill=mpg_type), width=.5) +
+ scale_fill_manual(name="Mileage",
+    labels = c("Above Average", "Below Average"),
+    values = c("above"="#00ba38", "below"="#f8766d")) +
+ labs(subtitle="Normalised mileage from 'mtcars'",
+    title= "Diverging Bars") +
+ coord_flip()

Note −上記の値に対して上方向または下方向を指している一部のディメンションメンバーの発散棒グラフマーク。

発散棒グラフの出力については、以下で説明します。ここでは、関数geom_barを使用して棒グラフを作成します。

発散ロリポップチャート

使用する関数を変更するだけで、同じ属性と座標を使用して発散するロリポップチャートを作成します。つまり、ロリポップチャートの作成に役立つgeom_segment()を作成します。

> ggplot(mtcars, aes(x=`car name`, y=mpg_z, label=mpg_z)) +
+ geom_point(stat='identity', fill="black", size=6) +
+ geom_segment(aes(y = 0,
+    x = `car name`,
+    yend = mpg_z,
+    xend = `car name`),
+       color = "black") +
+ geom_text(color="white", size=2) +
+ labs(title="Diverging Lollipop Chart",
+    subtitle="Normalized mileage from 'mtcars': Lollipop") +
+ ylim(-2.5, 2.5) +
+ coord_flip()

発散ドットプロット

同様の方法で発散ドットプロットを作成します。ドットは、より大きな次元の分散プロットの点を表します。

> ggplot(mtcars, aes(x=`car name`, y=mpg_z, label=mpg_z)) +
+  geom_point(stat='identity', aes(col=mpg_type), size=6) +
+  scale_color_manual(name="Mileage",
+     labels = c("Above Average", "Below Average"),
+     values = c("above"="#00ba38", "below"="#f8766d")) +
+ geom_text(color="white", size=2) +
+ labs(title="Diverging Dot Plot",
+     subtitle="Normalized mileage from 'mtcars': Dotplot") +
+ ylim(-2.5, 2.5) +
+ coord_flip()

ここで、凡例は「平均より上」と「平均より下」の値を緑と赤の異なる色で表しています。ドットプロットは静的な情報を伝えます。原則は、ポイントのみが使用されることを除いて、発散棒グラフの原則と同じです。